博弈论入门

一、巴什博弈(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
");
		}
		else{
			printf("second
");
		}
	}
	return 0;
}

  先介绍最简单的一种,后续继续更新

原文地址:https://www.cnblogs.com/clb123/p/10438585.html