ZOJ1827博弈水题

来源:互联网 发布:思锐汽修软件 编辑:程序博客网 时间:2024/05/01 05:20

都怪我太菜,这么水的题我竟然没做出来,亏我之前还特意看过博弈论

/*ID: CaoLeiPROG: a.cppLANG: C++一个状态是必败态当且仅当所有的后记状态都是必胜态一个状态是必胜态当且仅当他至少有一个后继状态是必败态没有后继状态的是必败态*/#include <cstdio>#include <iostream>#include <cstring>#include <algorithm>#include <set>#include <queue>#include <map>#include <cmath>#include <vector>using namespace std;#define N 500010#define pi acos(-1.0)#define inf 0x3f3f3f3f#define pb(x) push_back((x))typedef long long ll;typedef unsigned long long ull;char s[100];int use[7];bool dfs(int sum){    if(sum>=31) return false;    bool f=true;    for(int i=1;i<=6;i++){        if(use[i]<4&&i+sum<32){            use[i]++;            if(!dfs(i+sum))            {                f=false;            }            use[i]--;        }    }    if(!f) return true;    return false;}int main(){    while(~scanf("%s",s)){        printf("%s ",s);        getchar();        memset(use,0,sizeof(use));        int len=strlen(s);        int sum=0;        for(int i=0;i<len;i++){            use[s[i]-'0']++;            sum+=(s[i]-'0');        }        //cout<<dfs(sum)<<endl;        if(dfs(sum)){            if(len%2) printf("B\n");            else printf("A\n");        }        else {            if(len%2) printf("A\n");            else printf("B\n");        }    }    return 0;}
0 0
原创粉丝点击