跳到主要内容

1025.除数博弈

链接:1025.除数博弈
难度:Easy
标签:脑筋急转弯、数学、动态规划、博弈
简介:爱丽丝和鲍勃一起玩游戏,他们轮流行动。爱丽丝先手开局。

题解 1 - typescript

  • 编辑时间:2020-07-24
  • 执行用时:88ms
  • 内存消耗:40MB
  • 编程语言:typescript
  • 解法介绍:动态规划,dp[i]=i 数时是否能赢,dp[i]=可余数中是否有数可匹配。
function divisorGame(N: number): boolean {
const dp = new Array(N).fill(false);
for (let i = 2; i <= N; i++) dp[i - 1] = getMods(i).some(num => !dp[i - num - 1]);
return dp[N - 1];
function getMods(num: number) {
const arr = [1];
for (let i = 2; i < num; i++) {
if (num % i === 0) arr.push(i);
}
return arr;
}
}

题解 2 - typescript

  • 编辑时间:2020-07-24
  • 执行用时:76ms
  • 内存消耗:37.4MB
  • 编程语言:typescript
  • 解法介绍:枚举后推断是否能取余 2。
function divisorGame(N: number): boolean {
return !(N & 1);
}