LeetCode刷题笔记 292. Nim 游戏 【智力题】【动态规划】

动态规划超时

思路可以有哈

class Solution {
public:
    bool canWinNim(int n) {
        vector<bool> dp(n+1);
        for(int i=0;i<4;i++) dp[i]=true;
        for(int i=4;i<=n;i++) dp[i]=!(dp[i-1]&&dp[i-2]&&dp[i-3]);
        return dp[n];
    }
};

一行本质解题

如果能被4整除, 我们肯定会输 如4、8、12、… 无论我们怎么选,对方都可以在下一步凑出和为4,到最后仍是我们从4个石头里选。

class Solution {
public:
    bool canWinNim(int n) {
    	/return n%4;
        return n&3;
    }
};

你可能感兴趣的:(Leetcode)