1 #include<stdio.h>
2 #include<stdlib.h>//回溯法运用。模拟汉诺塔过程
3
4 int flag;
5 void hanor(int n,int *a,int *b,int *c)
6 {
7 int i;
8 if(!flag)
9 return ;
10 if(n == 0)
11 {
12 flag = 1;
13 return ;
14 }
15 if(n == b[1])
16 {
17 flag = 0;
18 return ;
19 }
20 if(a[1] == n)
21 {
22 a[0]--;
23 for(i=1; i<=a[0]; i++)
24 a[i] = a[i+1];
25 hanor(n-1,a,c,b);
26 }
27 else if(c[1] == n )
28 {
29 c[0]--;阿
30 for(i=1; i<=c[0]; i++)
31 c[i] = c[i+1];
32 hanor(n-1,b,a,c);
33 }
34 }
35 int main()
36 {
37 int i,j,ncases,n;
38 int a[65],b[65],c[65];
39
40 scanf("%d",&ncases);
41 while( ncases-- )
42 {
43 scanf("%d",&n);
44 scanf("%d",&a[0]);
45 for(i=1; i<=a[0]; i++)
46 scanf("%d",&a[i]);
47 scanf("%d",&b[0]);
48 for(i=1; i<=b[0]; i++)
49 scanf("%d",&b[i]);
50 scanf("%d",&c[0]);
51 for(i=1; i<=c[0]; i++)
52 scanf("%d",&c[i]);
53 flag = 1;
54 hanor(n,a,b,c);
55 if( flag )
56 printf("true\n");
57 else
58 printf("false\n");
59 }
60 system("pause");
61 return 0;
62 }