给出序列,在剩下的卡中选择,谁先拿到大于31的输,搜一下就可以了!
代码如下:
#include<cstdio>
#include<cstring>
char str[];
int a[],sum;
bool dfs(int m)
{
if(m>=) return ;
for(int i=;i<=;i++){
if(a[i]&&m+i<=){
a[i]--;
if(!dfs(m+i)){
a[i]++;
return ;
}
a[i]++;
}
}
return ;
}
int main()
{
while(scanf("%s",str)!=EOF){
int l=strlen(str);
for(int i=;i<=;i++) a[i]=;
sum=;
for(int i=;i<l;i++){
sum+=str[i]-'';
a[str[i]-'']--;
}
printf("%s ",str);
if(sum>=){
if(l&) puts("A");
else puts("B");
continue;
}
if(dfs(sum)){
if(l&) puts("B");
else puts("A");
}
else{
if(l&) puts("A");
else puts("B");
}
}
return ;
}