Leetcode 1025. 除数博弈 题解(Shout out to 橙子哥)

题目链接:https://leetcode-cn.com/problems/divisor-game/
在这里插入图片描述在这里插入图片描述
开始动态规划!
Respect to 橙子哥,争取缩小差距!

维护dp数组,对于dp[i],表示其是否能先手胜利。任意 j 从 1 到 i - 1,如果满足 j 能整除 i 并且 dp[j - i] = 0,说明只要先手选 j ,后手必败

代码如下:

class Solution {
public:
    bool divisorGame(int N) {
        bool dp[1050] = {0};
        dp[1] = false;
        dp[2] = true;
        dp[3] = false;
        for(int i = 4; i <= N; i++) {
            for(int j = 1; j < i; j++) {
                if(i % j == 0 && !dp[i - j]) {
                    dp[i] = true;
                    break;
                }
            }
        }
        return dp[N];
    }
};

猜你喜欢

转载自blog.csdn.net/weixin_42396397/article/details/106013366