http://acm.hdu.edu.cn/showproblem.php?pid=4315
博弈论的题目,谁把国王移动到顶点的赢。博弈论的题活,目比较注意分析奇偶性、由简单到复杂的分析方法。
他人具体代码:
View Code
#include<iostream> #include<cstring> #include<cstdio> #define MAXN 1010 using namespace std; int a[MAXN]; int main() { int n,k,i; while(cin>>n>>k) { memset(a,0,sizeof(a)); for(i=1;i<=n;i++) scanf("%d",&a[i]); if(k==1) { cout<<"Alice"<<endl; continue; } int t; if(n%2==0) { t=a[2]-a[1]-1; for(i=4;i<=n;i=i+2) t=t^(a[i]-a[i-1]-1); if(t==0)cout<<"Bob"<<endl; else cout<<"Alice"<<endl; } else { t=a[1]; if(k==2) t-=1; for(i=3;i<=n;i=i+2) t=t^(a[i]-a[i-1]-1); if(t==0)cout<<"Bob"<<endl; else cout<<"Alice"<<endl; } } return 0; }