LeetCode292. Nim 游戏

找规律的题目,对于1, 2, 3块石头,由于我们可以一次拿走,所以必赢。
而如果是4块石头,不管我们拿多少块(1、2、3),最会剩下1~3块,使得对手可以一次拿走,所以必输。

我们管n=1,2,3叫必胜态,n=4叫必败态。

注意到,一个必败态的n加上1,2,3,又变成了必胜态。比如n=5,6,7的时候,我们可以(分别)拿1,2,3块石头,
使得剩下的石头数量是4,留给对手一个必败态,这样我们就必胜了。
所以一个必败态加1,加2,加3就是必胜态。

而如果一个必败态+4,则不管我们拿多少块,都留给了对手一个必胜态。则我们必败了。

所以规律就是,当n是4的倍数的时候,必败。
其他情况下,必胜。、

代码如下:

class Solution {
public:
    bool canWinNim(int n) {
        if(n % 4 == 0) {
            return false;
        }
        return true;
    }
};
原文地址:https://www.cnblogs.com/linrj/p/13571858.html