http://acm.hdu.edu.cn/showproblem.php?pid=1716
排列2
Time Limit: 1000/1000 MS (Java/Others)????Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1948????Accepted Submission(s): 757
現(xiàn)有四張卡片,用這四張卡片能排列出很多不同的4位數(shù),要求按從小到大的順序輸出這些4位數(shù)。
?
?
每組輸出數(shù)據(jù)間空一行,最后一組數(shù)據(jù)后面沒(méi)有空行。
?
1 #include<iostream>
2 #include<cstdio>
3 #include<cstring>
4 using namespace std;
5 int c[ 4 ], s[ 4 ], flag, begin;
6 int cmp( const void *a, const void *b)
7 {
8 return *( int *)a - *( int *)b;
9 }
10 void get_next( int cur, int n)
11 {
12 if (cur == n)
13 {
14 if (s[ 0 ] == 0 )
15 return ;
16 if (flag != s[ 0 ])
17 {
18 flag = s[ 0 ];
19 putchar( 10 );
20 }
21 else if (begin)
22 begin = 0 ;
23 else if (!begin)
24 putchar( ' ' );
25 for ( int i = 0 ; i < 4 ; i++)
26 {
27 printf( " %d " , s[i]);
28 }
29 return ;
30 }
31 for ( int i = 0 ; i < 4 ; i++)
32 if (!i || c[i] != c[i- 1 ])
33 {
34 int c1, c2;
35 c1 = c2 = 0 ;
36 for ( int j = 0 ; j < cur; j++)
37 if (s[j] == c[i])
38 c1++;
39 for (j = 0 ; j < n; j++)
40 if (c[i] == c[j])
41 c2++;
42 if (c1 < c2)
43 {
44 s[cur] = c[i];
45 get_next(cur+ 1 , n);
46 }
47 }
48 }
49 int main()
50 {
51 scanf( " %d%d%d%d " , &c[ 0 ], &c[ 1 ], &c[ 2 ], &c[ 3 ]);
52 if (c[ 1 ] || c[ 2 ] || c[ 3 ] || c[ 0 ])
53 {
54 qsort(c, 4 , sizeof ( int ), cmp);
55 for ( int i = 0 ; c[i] == 0 ; i++);
56 flag = c[i];
57 begin = 1 ;
58 get_next( 0 , 4 );
59 putchar( 10 );
60 }
61 else return 0 ;
62 while (scanf( " %d%d%d%d " , &c[ 0 ], &c[ 1 ], &c[ 2 ], &c[ 3 ]))
63 {
64 if (c[ 1 ] || c[ 2 ] || c[ 3 ] || c[ 0 ])
65 {
66 putchar( 10 );
67 qsort(c, 4 , sizeof ( int ), cmp);
68 for ( int i = 0 ; c[i] == 0 ; i++);
69 flag = c[i];
70 begin = 1 ;
71 get_next( 0 , 4 );
72 putchar( 10 );
73 }
74 else break ;
75 }
76 return 0 ;
77 }
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
