Time Limit: 3000/1000 MS
(Java/Others) Memory Limit: 32768/32768 K
(Java/Others)
Total Submission(s): 1039 Accepted
Submission(s): 643
http://acm.hdu.edu.cn/showproblem.php?pid=2181
1 #include<iostream> 2 #include<stdio.h> 3 #include<cstring> 4 #include<cstdlib> 5 #include<algorithm> 6 using namespace std; 7 8 struct node 9 { 10 int a[3]; 11 }f[22]; 12 bool hash[22]; 13 int stack[22]; 14 int s,t; 15 16 void dfs(int m,int cur) 17 { 18 int i,k; 19 if(cur==21 && m==s) 20 { 21 for(i=0;i<21;i++) 22 { 23 if(i!=0)printf(" "); 24 else printf("%d: ",++t); 25 printf("%d",stack[i]); 26 } 27 printf("\n"); 28 } 29 30 for(i=0;i<3;i++) 31 { 32 k=f[m].a[i]; 33 if(hash[k]==false) 34 { 35 hash[k]=true; 36 stack[cur]=k; 37 dfs(k,cur+1); 38 hash[k]=false; 39 } 40 else if(k==s && cur==20) 41 { 42 stack[cur]=k; 43 dfs(k,cur+1); 44 } 45 } 46 } 47 int main() 48 { 49 int i; 50 while(scanf("%d",&f[1].a[0])>0) 51 { 52 if(f[1].a[0]==0)break; 53 scanf("%d%d",&f[1].a[1],&f[1].a[2]); 54 for(i=2;i<=20;i++) 55 scanf("%d%d%d",&f[i].a[0],&f[i].a[1],&f[i].a[2]); 56 57 for(i=1;i<=20;i++) 58 sort(f[i].a,f[i].a+3); 59 scanf("%d",&s); 60 memset(hash,false,sizeof(hash)); 61 hash[s]=true; 62 stack[0]=s; 63 t=0; 64 dfs(s,1); 65 } 66 return 0; 67 }
原文:http://www.cnblogs.com/tom987690183/p/3662641.html