首先是对阶梯博弈的阐述...博弈在一列阶梯上进行...每个阶梯上放着自然数个点..两个人进行阶梯博弈...每一步则是将一个集体上的若干个点( >=1 )移到前面去..最后没有点可以移动的人输..

如这就是一个阶梯博弈的初始状态 2 1 3 2 4 ... 只能把后面的点往前面放...如何来分析这个问题呢...其实阶梯博弈经过转换
可以变为Nim..把所有奇数阶梯看成N堆石子..做nim..把石子从奇数堆移动到偶数堆可以理解为拿走石子..就相当于几个奇数堆的石子在做Nim..( 如所给样例..2^3^4=5 不为零所以先手必败)为什么可以这样来转化?
# include <stdio.h>
# include <algorithm>
# include <string.h>
using namespace std;
int main()
{
int j,k,t,n,i,a[1010],sum,b[1010];
while(~scanf("%d",&t))
{
while(t--)
{
scanf("%d",&n);
for(i=0; i<n; i++)
scanf("%d",&a[i]);
sort(a,a+n);//注意排序
k=0;
for(i=n-1; i>0; i--)
{
b[k++]=a[i]-a[i-1]-1;
}
b[k++]=a[0]-1;//注意
sum=0;
for(j=0;j<k;j+=2)//从高到低的奇数堆进行nim博弈
{
sum^=b[j];
}
if(sum==0)
printf("Bob will win\n");
else
printf("Georgia will win\n");
}
}
return 0;
}