Time: 20190903
Type: Easy

题目描述

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

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

选出任一 x,满足 0 < x < N 且 N % x == 0 。
用 N - x 替换黑板上的数字 N 。
如果玩家无法执行这些操作,就会输掉游戏。

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

示例 1:

输入:2
输出:true
解释:爱丽丝选择 1,鲍勃无法进行操作。
示例 2:

输入:3
输出:false
解释:爱丽丝选择 1,鲍勃也选择 1,然后爱丽丝无法进行操作。

提示:

1 <= N <= 1000

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/divisor-game
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路

一种是数学推导,一行代码即可解决。

另一种是动态规划法,自底向上推导。

状态定义:

f[i]表示当前数字是i时Alice输或者赢,f[i] = 1时,Alice赢,f[i]
= 0时Alice输。

代码

数学推导法:

class Solution:def divisorGame(self, n: int) -> bool:if n % 2 == 0:return Trueelse:return False

动态规划法

class Solution:def divisorGame(self, n: int) -> bool:# f[i]表示n == i时,Alice赢或输(1赢,0输)f = [0 for i in range(n+1)]f[1] = 0if n <= 1:return 0f[2] = 1 # 如果Alice先手拿到2,一定赢for i in range(3, n + 1):for j in range(1, i // 2): # j是i的除数if i % j == 0 and f[i-j] == 0:f[i] = 1breakreturn f[n] == 1

END.

Leetcode1025.除数博弈相关推荐

  1. c语言最大字符1025,leetcode1025(除数博弈)--C语言实现

    求: 爱丽丝和鲍勃一起玩游戏,他们轮流行动.爱丽丝先手开局. 最初,黑板上有一个数字 N .在每个玩家的回合,玩家需要执行以下操作: 选出任一 x,满足 0 < x < N 且 N % x ...

  2. leetcode--1025. 除数博弈

    爱丽丝和鲍勃一起玩游戏,他们轮流行动.爱丽丝先手开局. 最初,黑板上有一个数字 N .在每个玩家的回合,玩家需要执行以下操作: 选出任一 x,满足 0 < x < N 且 N % x == ...

  3. leetcode1025. 除数博弈(dp/数学)

    爱丽丝和鲍勃一起玩游戏,他们轮流行动.爱丽丝先手开局. 最初,黑板上有一个数字 N .在每个玩家的回合,玩家需要执行以下操作: 选出任一 x,满足 0 < x < N 且 N % x == ...

  4. [Swift]LeetCode1025. 除数博弈 | Divisor Game

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...

  5. leetcode - 1025. 除数博弈

    1025. 除数博弈 ------------------------------------------ 爱丽丝和鲍勃一起玩游戏,他们轮流行动.爱丽丝先手开局. 最初,黑板上有一个数字 N .在每个 ...

  6. 一个有趣的博弈或推理游戏——除数博弈(动态规划与归纳法)

    除数博弈 除数博弈(Divisor Game)是我在leetcode上遇到的一个题目,它的描述如下: Alice and Bob take turns playing a game, with Ali ...

  7. Leetcode之动态规划(DP)专题-1025. 除数博弈(Divisor Game)

    Leetcode之动态规划(DP)专题-1025. 除数博弈(Divisor Game) 爱丽丝和鲍勃一起玩游戏,他们轮流行动.爱丽丝先手开局. 最初,黑板上有一个数字 N .在每个玩家的回合,玩家需 ...

  8. LeetCode 1025. 除数博弈(动态规划)

    1. 题目 爱丽丝和鲍勃一起玩游戏,他们轮流行动.爱丽丝先手开局. 最初,黑板上有一个数字 N .在每个玩家的回合,玩家需要执行以下操作: 选出任一 x,满足 0 < x < N 且 N ...

  9. leetcode算法题--除数博弈★

    原题链接:https://leetcode-cn.com/problems/divisor-game/ 1.动态规划 dp[i]表示N=i时,alice先手的胜负 状态转移 //状态转移中,dp[i] ...

最新文章

  1. Oracle笔记----oracle数字类型number自增
  2. [BZOJ 2038][2009国家集训队]小Z的袜子(hose)(莫队)
  3. 0xde c语言合法常量_【期初优课堂】2020“云课堂”开讲啦!第3期(C语言)
  4. Spring4基础 学习笔记(3) ---- AOP(1) ---- 基于Xml
  5. Python基础——PyCharm版本——第二章、数据类型和变量(超详细)
  6. java地狱猫_ES6 ES6变量的声明
  7. Django从理论到实战(part33)--表关系
  8. 知乎大神深入解析:单片机晶振脚原理是什么?
  9. 几何画板自定义工具_用好神奇的数学工具--几何画板,轻松作出复杂的几何图形...
  10. Android 动态创建控件并设置控件的大小之Android屏幕适配攻略(五)
  11. wordpress如何让百度快速收录_百度搜狗蜘蛛池让你的新网站内页快速收录
  12. 【测试】使用Fiddler4实现手机抓包
  13. IEEE Trans LaTex模板参考文献格式
  14. thingworx- 安装thingworx120天试用版步骤
  15. zcmu --1919(多重背包)
  16. 第一次学习Web的总结
  17. icloud安装错误怎么办_怎么办?iCloud云备份失败该如何解决?
  18. TCP在FIN_WAIT1状态到底能持续多久以及TCP假连接问题
  19. android微信支付毁掉,android微信支付 需要注意的坑
  20. Step1 :【C51】LED灯闪烁、跑马灯、流水灯、实现每次亮两个灯的流水灯

热门文章

  1. Tensorflow(r1.4)API--tf.nn.dropout
  2. java jsp 特殊标签_JSP复习(四):JSTL标记
  3. 螃蟹先生2 android,螃蟹先生2
  4. php發送郵件_PHP发送邮件类库PHPMailer的简单使用
  5. java ftp 上传文件 无效_java实现FTP文件上传出现的问题
  6. 鼠标悬停显示图片html5,JavaScript 鼠标悬停图片,显示隐藏文本
  7. c++ 字符减去‘0’_字符串为什么减‘0’成整数
  8. python程序运行键_python实现按任意键继续执行程序
  9. 腐蚀rust图纸怎么找_怎么解决变压器油滤油机的温差效应?在这里可以得到解决...
  10. 使用Julia进行图像处理--JuliaImages介绍与基础使用