亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

1716 - 排列2

系統(tǒng) 2080 0

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


Problem Description
Ray又對(duì)數(shù)字的列產(chǎn)生了興趣:
現(xiàn)有四張卡片,用這四張卡片能排列出很多不同的4位數(shù),要求按從小到大的順序輸出這些4位數(shù)。
?

?

Input
每組數(shù)據(jù)占一行,代表四張卡片上的數(shù)字(0<=數(shù)字<=9),如果四張卡片都是0,則輸入結(jié)束。
?

?

Output
對(duì)每組卡片按從小到大的順序輸出所有能由這四張卡片組成的4位數(shù),千位數(shù)字相同的在同一行,同一行中每個(gè)四位數(shù)間用空格分隔。
每組輸出數(shù)據(jù)間空一行,最后一組數(shù)據(jù)后面沒(méi)有空行。
?

?

Sample Input
1 2 3 4
1 1 2 3
0 1 2 3
0 0 0 0
?
Sample Output
1234 1243 1324 1342 1423 1432
2134 2143 2314 2341 2413 2431
3124 3142 3214 3241 3412 3421
4123 4132 4213 4231 4312 4321
?
1123 1132 1213 1231 1312 1321
2113 2131 2311
3112 3121 3211
?
1023 1032 1203 1230 1302 1320
2013 2031 2103 2130 2301 2310
3012 3021 3102 3120 3201 3210
?
題目的目的是輸出數(shù)字的全排列,看似很簡(jiǎn)單,但是這題讓我糾結(jié)了好長(zhǎng)時(shí)間~~
首先輸出前排列時(shí)不能讓千位為0,然后要將相同的數(shù)字排除掉,比如:1 1 2 3時(shí) 1123和1123一樣~~然后就是輸出格式,換行問(wèn)題。
剛開(kāi)始我想用一個(gè)計(jì)數(shù)的變量,6個(gè)數(shù)字換一行,但是第二個(gè)樣例不符合,也就是當(dāng)有相同數(shù)字時(shí),每一行不一定是6個(gè);后來(lái)我加了一個(gè)變量,每次輸出時(shí)判斷首位是否和上次輸出相同,相同則輸出空格,不同輸出換行~~(注意每行結(jié)尾不能先輸空格再換行,會(huì)PE~~~)最后還要注意輸入的兩組數(shù)據(jù)之間要空一行,但是最后一組數(shù)據(jù)不能有空行~~~
各種PE,郁悶死了....
          
             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 }

1716 - 排列2


更多文章、技術(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ì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 日韩精品片 | 亚洲精品福利一区二区 | 日本在线毛片视频免费看 | 黄a毛片| 午夜91 | 久久精品天天中文字幕人 | 国产精品资源网站在线观看 | 国产精品高清视亚洲一区二区 | 91麻精品国产91久久久久 | 国内精品久久久久影院日本 | 男女一级毛片免费视频看 | 日本福利片国产午夜久久 | 久久久综合视频 | 欧美区一区二 | 久久天天躁狠狠躁夜夜躁 | 夜夜夜操| 久久婷婷网 | 亚洲欧美中文字幕在线网站 | 精品成人免费播放国产片 | 国产五月色婷婷六月丁香视频 | 国产精品一区在线播放 | 5388国产亚洲欧美在线观看 | 美利坚永久精品视频在线观看 | 国产99视频精品免视看7 | 看全色黄大色大片免费久黄久 | 精品欧美成人bd高清在线观看 | 国产精品一区二区久久沈樵 | 国产成人精品日本亚洲网站 | 看免费的毛片 | 在线亚洲黄色 | 国产瑟瑟| 日日干日日干 | 色播99| 白云精品视频国产专区 | 天天操天天曰 | 成人三级视频在线观看 | 特级黄一级播放 | 国产午夜精品福利视频 | 美女黄频免费观看 | 欧美日韩亚洲国产精品一区二区 | 国产精品久久香蕉免费播放 |