博弈论入门
一、巴什博弈(Bash Game)
只有一堆n个物品,两个人从轮流中取出(1~m)个;最后取光者胜。
考虑到 若n=m+1 那么 第一个人不论如何取都不能取胜。
进一步我们发现 若 n=k*(m+1)+r; 先取者拿走 r 个,那么后者再拿(1~m)个
n=(k-1)*(m+1)+s; 先取者再拿走s 个 最后总能造成 剩下n=m+1 的局面。
因此,此时先手有必赢策略。
相对应的,若n=k*(m+1) 那么先取者必输。
因此我们可以写出对应的程序(默认 n m都大于0)
例如 :http://acm.hdu.edu.cn/showproblem.php?pid=1846
#include<stdio.h>
int main()
{
int n,a,b;
scanf("%d",&n);
while(n--){
scanf("%d%d",&a,&b);
if(a%(b+1) == 0){
printf("first\n");
}
else{
printf("second\n");
}
}
return 0;
}
先介绍最简单的一种,后续继续更新

浙公网安备 33010602011771号