#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