1 #include<stdio.h> 2 #include<string.h> 3 int hash[25],map[25][5],m,k,jilu[25]; 4 void dfs(int now,int step) 5 { 6 int i,judge; 7 jilu[step]=now; 8 if (step==20) 9 { 10 judge=0; 11 for (i=1;i<=3;i++) 12 if (map[now][i]==m) judge=1; 13 if (judge==1) k++; else return; 14 printf("%d: ",k); 15 for (i=1;i<=20;i++) printf(" %d",jilu[i]); 16 printf(" %d\n",m); 17 } 18 hash[now]=1; 19 for (i=1;i<=3;i++) 20 if (hash[map[now][i]]==0) dfs(map[now][i],step+1); 21 hash[now]=0; 22 return; 23 } 24 int main() 25 { 26 int i,j; 27 memset(map,0,sizeof(map)); 28 for (i=1;i<=20;i++) 29 for (j=1;j<=3;j++) 30 { 31 scanf("%d",&m); 32 map[i][j]=m; 33 } 34 while (~scanf("%d",&m)&&m!=0) 35 { 36 k=0; 37 memset(hash,0,sizeof(hash)); 38 dfs(m,1); 39 } 40 return(0); 41 }
http://acm.hdu.edu.cn/showproblem.php?pid=2181