LeetCode?启动!!!
题目:Nim 游戏
题目链接:292. Nim 游戏
题目描述
代码与解题思路
func canWinNim(n int) bool {
return n % 4 != 0
}
找规律
我们通过模拟可以发现,如果石子是 1-3,先手必胜
如果石子是 4,先手必输
如果石子是 5-7,先手必胜
如果石子是 8,先手必败
如果石子是 9-11,先手必胜
. . . . . .
我们可以发现,假设石子是 5-7,那我们可以通过选石子的数量,让后手石子的数量变成 4,这样先手就胜利了,我们可以推断一下,谁选石子的时候是 4 的倍数,谁就会输
所以 return n % 4 != 0
(PS:但是这种方法纯纯猜的,心里没底)
博弈论
巴什博弈,只有一堆 n 个物品,两个人轮流从这堆物品中取物, 规定每次至少取一个,最多取 m 个。最后取光者得胜。 只要 n 不能整除 m+1,那么必然是先手取胜,否则后手取胜。
(PS:最近怎么老是出博弈论的题目)