LeetCode题解——无分类篇
LC292 Nim游戏
你和你的朋友,两个人一起玩 Nim 游戏:
桌子上有一堆石头。
你们轮流进行自己的回合,你作为先手。
每一回合,轮到的人拿掉 1 - 3 块石头。
拿掉最后一块石头的人就是获胜者。
假设你们每一步都是最优解。请编写一个函数,来判断你是否可以在给定石头数量为 n 的情况下赢得游戏。如果可以赢,返回 true;否则,返回 false 。
class Solution(object):
def canWinNim(self, n):
"""
:type n: int
:rtype: bool
"""
"""
面对4的整数倍的人永远无法翻身,你拿N根对手就会拿4-N根,
保证每回合共减4根,你永远对面4倍数,直到4.
相反,如果最开始不是4倍数,你可以拿掉刚好剩下4倍数根,让他永远面对4倍数。
"""
return not n%4 == 0