題目連接:http://acm.hdu.edu.cn/showproblem.php?pid=1716php
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 5692 Accepted Submission(s): 2178
ios
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <algorithm> 5 6 using namespace std; 7 8 int a[10],num[10]; 9 int vis[9999],flag; 10 int Vis[9999]; 11 12 void dfs(int s,int t) 13 { 14 if (t>4) 15 { 16 17 int ans=num[1]*1000+num[2]*100+num[3]*10+num[4]; 18 if (Vis[ans]==0) 19 { 20 if (flag==0) 21 printf ("%d",ans); 22 else 23 printf (" %d",ans); 24 flag++; 25 /*if (flag==6) 26 { 27 printf ("\n"); 28 flag=0; 29 }*/ 30 Vis[ans]=1; 31 } 32 return ; 33 } 34 for (int i=1; i<=4; i++) 35 { 36 if (!vis[i]) 37 { 38 vis[i]=1; 39 num[t]=a[i]; 40 dfs(i,t+1); 41 vis[i]=0; 42 } 43 } 44 } 45 46 int main() 47 { 48 int T=0; 49 while (~scanf("%d%d%d%d",&a[1],&a[2],&a[3],&a[4])) 50 { 51 if (a[1]==0&&a[2]==0&&a[3]==0&&a[4]==0) 52 break; 53 if (T) 54 printf ("\n"); 55 T++; 56 flag=0; 57 memset(vis,0,sizeof(vis)); 58 memset(Vis,0,sizeof(Vis)); 59 a[0]=-1; 60 sort(a+1,a+5); 61 for (int i=1; i<=4; i++) 62 if (a[i]!=0&&a[i]!=a[i-1]) 63 { 64 num[1]=a[i]; 65 vis[i]=1; 66 dfs(i,2); 67 printf ("\n"); 68 flag=0; 69 vis[i]=0; 70 } 71 } 72 return 0; 73 }