1. Bash博弈(巴什博弈)
只有一堆n个物品,两个人轮流从中取物,规定每次最少取一个,最多取m个,最后取光者为胜。
/*
if(n%(m+1)==0)
cout<<"后手必胜"<<endl;
else
cout<<"先手必胜"<<endl;
*/
2. 威佐夫博弈(Wythoff Game):
有两堆各若干的物品,两人轮流从其中一堆取至少一件物品,至多不限,或从两堆中同时取相同件物品,规定最后取完者 胜利。
若两堆物品的初始值为(x,y),且x<y,则另z=y-x;
记w=(int)[((sqrt(5)+1)/2)*z ];
若w=x,则先手必败,否则先手必胜。
/*
while(cin>>n1>>n2)
{
if(n1>n2) swap(n1,n2); //必须是看小的数是否等于那个公式
temp=floor((n2-n1)*(1+sqrt(5.0))/2.0);
if(temp==n1) cout<<"后手必胜"<<endl;
else cout<<"先手必胜"<<endl;
}
*/