1025. 除数博弈

爱丽丝和鲍勃一起玩游戏,他们轮流行动。爱丽丝先手开局。

最初,黑板上有一个数字 n 。在每个玩家的回合,玩家需要执行以下操作:

  • 选出任一 x,满足 0 < x < nn % x == 0
  • n - x 替换黑板上的数字 n

如果玩家无法执行这些操作,就会输掉游戏。

只有在爱丽丝在游戏中取得胜利时才返回 true 。假设两个玩家都以最佳状态参与游戏。

示例 1:

ini 复制代码
输入: n = 2
输出: true
解释: 爱丽丝选择 1,鲍勃无法进行操作。

示例 2:

ini 复制代码
输入: n = 3
输出: false
解释: 爱丽丝选择 1,鲍勃也选择 1,然后爱丽丝无法进行操作

题解:

js 复制代码
/**
 * @param {number} n
 * @return {boolean}
 */
// 方法一:
// 不管N是几,假如N是一个偶数,我就选x = 1,那n - x必然是奇数,我就获胜;
// 假如N是一个奇数,我没得选直接就输了。
var divisorGame = function (n) {
    return n % 2 == 0
};
// 方法二:动态规划
var divisorGame = function (n) {
    const dp = new Array(n + 1).fill(false)
    dp[2] = true
    for (let i = 3; i <= n; i++) {
        for (let j = i; j < i; j++) {
            // 当前位置前一位[i - j] 为false时当前为才为true
            if (i % j === 0 && !dp[i - j]) {
                dp[i] = true
                break
            }
        }
    }
    return dp[n]
};
相关推荐
Controller-Inversion12 分钟前
322. 零钱兑换
算法
头发够用的程序员13 分钟前
C++和Python面试经典算法汇总(一)
开发语言·c++·python·算法·容器·面试
淡海水34 分钟前
【AI模型】模型量化技术详解
人工智能·算法·机器学习
炸膛坦客36 分钟前
嵌入式 - 数据结构与算法:(1-1)数据结构 - 顺序表(Sequential List)
数据结构·算法·嵌入式
水龙吟啸44 分钟前
数据结构与算法随机复习–Day1
数据结构·c++·算法
生成论实验室1 小时前
《事件关系阴阳博弈动力学:识势应势之道》第八篇:认知与反思关系——探索、定位与延续
人工智能·算法·架构·知识图谱·创业创新
YaraMemo1 小时前
一文带你区分全局最优解和帕累托最优解
算法·5g·信息与通信·信号处理
白夜11171 小时前
C++(标签派发 Tag Dispatching)
开发语言·c++·笔记·算法
YaraMemo2 小时前
数学优化问题中的三大转化:多目标转化为单目标,多变量转化为单变量,有约束转化为无约束
人工智能·算法·5g·信息与通信·信号处理
Ailan_Anjuxi2 小时前
【附Python源码】使用minGPT训练自己的小型GPT语言模型
算法