您的位置:首页 > 其它

hdu 4155 The Game of 31 博弈论

2013-09-04 14:04 309 查看
给出序列,在剩下的卡中选择,谁先拿到大于31的输,搜一下就可以了!

代码如下:

#include<cstdio>
#include<cstring>
char str[25];
int a[7],sum;
bool dfs(int m)
{
if(m>=31) return 0;
for(int i=1;i<=6;i++){
if(a[i]&&m+i<=31){
a[i]--;
if(!dfs(m+i)){
a[i]++;
return 1;
}
a[i]++;
}
}
return 0;
}
int main()
{
while(scanf("%s",str)!=EOF){
int l=strlen(str);
for(int i=1;i<=6;i++) a[i]=4;
sum=0;
for(int i=0;i<l;i++){
sum+=str[i]-'0';
a[str[i]-'0']--;
}
printf("%s ",str);
if(sum>=31){
if(l&1) puts("A");
else puts("B");
continue;
}
if(dfs(sum)){
if(l&1) puts("B");
else puts("A");
}
else{
if(l&1) puts("A");
else puts("B");
}
}
return 0;
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: