#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; bool flag; void dfs(int n,int *A,int *B,int *C) { if(n==0) { flag=1; return; } if(B[0]&&B[1]==n) { flag=0; return; } if(A[0]&&A[1]==n) { A[1]=A[0]-1;//个数减一 dfs(n-1,++A,C,B); } if(C[0]&&C[1]==n) { C[1]=C[0]-1; dfs(n-1,B,A,++C); } } int main() { int t; int A[70],B[70],C[70]; scanf("%d",&t); while(t--) { int n; memset(A,0,sizeof(A)); memset(B,0,sizeof(B)); memset(C,0,sizeof(C)); scanf("%d",&n); scanf("%d",&A[0]); for(int i=1;i<=A[0];i++) scanf("%d",&A[i]); scanf("%d",&B[0]); for(int i=1;i<=B[0];i++) scanf("%d",&B[i]); scanf("%d",&C[0]); for(int i=1;i<=C[0];i++) scanf("%d",&C[i]); dfs(n,A,B,C); if(flag)printf("true\n"); else printf("false\n"); } }
原文:http://www.cnblogs.com/xuxueyang/p/4290930.html