问题定义
问题存在两种不同的形式:
- A和B两个人玩游戏,假设有n个物品,每人每次必须至少拿1个,最多拿m个,先拿到最后一个物品的人获胜。思考一种最佳策略?
- A和B两个人玩游戏,假设有n个物品,每人每次必须至少拿1个,最多拿m个,先拿到最后一个物品的人失败。思考一种最佳策略?
存在很多变种,比如喊数字等等,但核心都是一样的。
解法
首先给出结论,不管n和m的取值如何,问题都存在
唯一解
,即该游戏不公平。
赛制1:先拿完的人获胜
首先对n
进行分解,n = k(m+1) + l
,将n
转化成与m+1
相关的形式。假设A先拿,B后拿。
- 如果
l=0
,即n能被m+1整除,此时B(后手)必胜。因为无论A拿多少(x
),B只需要拿m+1-x
个即可,这样在最后一个轮次时,还剩m+1个,在至少拿1个最多拿m个的限制下,B一定能拿完。 - 反之,如果
l!=0
,此时A(先手)必胜,A在只需要先拿l
个,就能B陷入上一种情况。
结论:n%(m+1)==0时,B必胜,否则A必胜。
赛制2:先拿完的人失败
分析:相比于赛制1,直接思考赛制2可能更复杂,但换个角度想,其实就相当于变成了先拿完n-1个物品的人获胜
,因为每次至少要拿1个,只要谁先拿到n-1个物品,剩下的那个人就必须拿完。因此,把赛制1的中的n
换成n-1
即可。
结论:n%(m+1)==1时,B必胜,否则A必胜。