您的位置:首页 > 其它

博弈模板

2016-07-30 10:02 155 查看
///博弈模板
一)巴什博弈(Bash Game):
问题描述:
只有一堆n个物品,两个人轮流从这
堆物品中取物,规定每次至少取一
个,最多取m个。最后取光者得胜
问题解答:
很容易想到当n%(m+1)<>0时,先取必胜,
第一次先拿走n%(m+1),以后每个回合到
保持两人拿走的物品总和为m+1即可

二)威佐夫博弈(Wythoff Game):
问题描述:
有两堆各若干个物品,两个人轮流从某
一堆或同时从两堆中取同样多的物品,
规定每次至少取一个,多者不限,最
后取光者得胜。
问题解答:
奇异局势:第一个人必输的局
那么任给一个局势(a,b),怎
样判断它是不是奇异局势呢?我
们有如下公式:
ak =[k(1+√5)/2],
bk= ak + k  。
主要代码:
const double p=(1+sqrt(5.0))/2;
if (a>b) swap(a,b);
int k=b-a;
if (a==(int)(p*k))
{
printf("2\n");
}
else printf("1\n");

三)Nim游戏  :
问题描述:
有三堆各若干个物品,两个人轮流
从某一堆取任意多的物品,规定每
次至少取一个,多者不限,最后取
光者得胜
问题解答:
奇异局势:a[0]^a[1].....^a[n-1]=0.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: