题目链接: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];
}
};