一、巴什博弈(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; }
先介绍最简单的一种,后续继续更新