巴什博奕(Bash Game)是指这样的一个问题:
有一个含有n个物品的堆,两个人轮流从这堆物品中取物品, 规定每次至少取一个,最多取m个。最后取光者获胜。问你最后谁能获得胜利?
其实这个游戏不是靠运气获胜,只要知道原理,这个游戏其实是只和先手或后手有关的。
现在我们假设有7个物品,每次最多取3个,即 n = 7,m = 3
那么其实是先手必胜的,为什么呢?我们来看看分析。
先手第一次拿走3个,那么现在剩下4个,设后手取走k( 1 ≤ k ≤ 3 )个,那么先手就拿4-k个,因为k最小为1,则4-k最大为3,因此先手是可以取完的
显然,如果n = m + 1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够保证一次拿走剩余的物品,所有后者取胜。
我们发现了如何取胜的方法:如果 n=(m+1)*r +s,(r为任意自然数,s ≤ m),那么只要先取者率先拿走s个物品,如果后取者拿走k(1 ≤ k ≤ m)个,那么先取者再拿走m+1-k个,就会剩下(m+1)*(r-1)个,以后每次都保持这样的取法,那么先取者肯定获胜。所以,只要保持给对手留下(m+1)的倍数,就能最后获胜。
由此易得:如果 n%(m+1) !=0 也就相当于是 n = (m+1) * r + s
这种情况下 按照上述所说的方法则先手获胜。
反之如果 n%(m+1) = 0 就相当于是 n = (m+1) * r
这种情况后手按照上述方法 后手就能获胜。
看完上述介绍后,可以练习一道巴什博奕的入门题