292. Nim游戏

https://leetcode-cn.com/problems/nim-game/

解法一:

很简单(之前大一acm宣讲时大神提过的问题,然而并没有什么卵用),每个人每次只能拿1,2或3块石头,最小是1,最大是3.也就是说下一个人一定可以(假设说两人足够聪明)根据上一个人拿的数量来凑出一个4. 结果很容易推演:甲先手取i块,乙必定根据甲的情况取4-i块,然后经过n个回合(甲取,乙取),若还剩下石头(少于4块),则甲最后取完,甲胜.否则不剩下石头,乙最后取完,乙胜. 归根结底就是看总数是否是4的倍数.

class Solution:
    def canWinNim(self, n: int) -> bool:
        return n%4 != 0

最后更新于