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

1. 题目

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

最初,黑板上有一个数字 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
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

类似题目:

LeetCode 810. 黑板异或游戏(博弈推理)
LeetCode 5447. 石子游戏 IV hard(博弈DP)

  • 如果N是奇数,奇数的约数只能是奇数,奇数减去奇数==偶数
    拿到奇数,偶数再-1有为奇数,拿到奇数必输
  • 如果N是偶数,我每次减1,让对方是奇数,必赢
class Solution {
public:bool divisorGame(int N) {//return N%2 == 0;return (N&1)==0;}
};

0 ms 6 MB


动态规划

  • win[n] 表示剩余数字是 n 的时候,胜算 true or false
class Solution { //C++
public:bool divisorGame(int N) {if(N == 1)return false;vector<bool> win(N+1,false);win[1] = false;win[2] = true;for(int Ni = 3, x; Ni <= N; ++Ni){	//当前数字 Nifor(x = 1; x < Ni; ++x){	//我可以取小于 Ni 的 x,留给对手的数字是 Ni-xif(Ni%x == 0 && win[Ni-x]==false)//x可以取,且 留给对手的数使其失败win[Ni] = true;//那我就赢了,哈哈}}return win[N];}
};

12 ms 6.1 MB

class Solution: # py3def divisorGame(self, N: int) -> bool:if N == 1:return Falsedp = [False]*(N+1)dp[1] = Falsedp[2] = Truefor i in range(1, N+1):for j in range(1, i):if i%j == 0 and not dp[i-j]:dp[i] = Truereturn dp[N]

我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/476035.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python iterator iterable_Python中Iterator和Iterable的区别

python中list, str&#xff0c;truple, dict都是可以被迭代的&#xff0c;但他们不是迭代器。why?list/truple/map/dict这些数据的大小是确定的&#xff0c;我们可以准确知道他们的size。迭代器不知道要执行多少次&#xff0c;所以可以理解为不知道有多少个元素&#xff0c;每…

javascript之嵌套函数

在javascript中允许使用嵌套函数: <head><meta http-equiv"Content-Type" content"text/html; charsetgb2312" /><title>嵌套函数</title><script type"text/javascript"> function fun1(){ function fun…

BN / LN / IN / GN /

链接 但是代码不敢苟同! 所以自己写了两种代码! 由于这只是测试, 并不是用来训练, 所以α和β参数就没有加! def BN(inputs):c inputs.shape[1]for i in range(c):channel inputs[:,i,:,:]mu np.mean(channel)var np.var(channel)channel_new ((channel - mu)/(np.sqrt(…

LeetCode 672. 灯泡开关 Ⅱ(枚举)

1. 题目 现有一个房间&#xff0c;墙上挂有 n 只已经打开的灯泡和 4 个按钮。 在进行了 m 次未知操作后&#xff0c;你需要返回这 n 只灯泡可能有多少种不同的状态。 假设这 n 只灯泡被编号为 [1, 2, 3 …, n]&#xff0c;这 4 个按钮的功能如下&#xff1a; 1将所有灯泡的状…

安卓手机绘制uml图_Android Studio中绘制simpleUML类图详细说明及使用

一、Android Studio中安装simpleUML1、下载simpleUML jar包2、 添加simpleUMLCEjar包File--->Settings--->Plugins--->Install Plugin from disk,如下图&#xff1a;3、安装完成后重启AndroidStudio二、使用在某个类或module上右击&#xff0c;选择Add to simpleUML D…

ExtJs非Iframe框架加载页面实现

在用Ext开发App应用时&#xff0c;一般的框架都是左边为菜单栏&#xff0c;中间为tab页方式的显示区域。而tab页面大多采用的嵌入一个iframe来显示内容。但是采用iframe方式有一个很大的弊端就是每次在加载一个新的iframe时都要将Ext的核心js&#xff0c;css文件重新加载。由于…

LeetCode 873. 最长的斐波那契子序列的长度(动态规划)

文章目录1. 题目2. 解题2.1 暴力解2.2 动态规划1. 题目 如果序列 X_1, X_2, ..., X_n 满足下列条件&#xff0c;就说它是 斐波那契式 的&#xff1a; n>3n > 3n>3对于所有 i2<ni 2 < ni2<n&#xff0c;都有 XiXi1Xi2X_i X_{i1} X_{i2}Xi​Xi1​Xi2​ 给…

中文验证码 php_还在苦恼验证码怎么实现?看看这个验证码组件合集,你想要的都有...

随着安全性的要求越来越高&#xff0c;如今的验证码已经不再是简单的四个数字或者字母了&#xff0c;更复杂的图形验证码和行为验证码已经成为了更流行的趋势&#xff0c;但更难的实现也让很多开发者头秃&#xff0c;Gitee 已经替你们想到了这一点。不多说了&#xff0c;下面这…

SessionState详解

<sessionState> 元素 配置当前应用程序的会话状态设置。 配置结构的示例&#xff1a; <configuration> <system.web> <sessionState> <sessionState mode"Off|InProc|StateServer|SQLServer" cookieless"true…

reload端口 tomcat_tomcat上部署网站的三种方式

一、利用webapps文件夹自动部署这是最简单的方式&#xff0c;只要将网站直接拷贝到&#xff1a;tomcat根目录下的webapps文件夹里举例&#xff1a;helloworld文件夹下创建里index.html文件&#xff0c;然后把helloworld文件夹移动到tomcat根目录下webapps文件夹里&#xff0c;重…

LeetCode 1095. 山脉数组中查找目标值(二分查找)

1. 题目 给你一个 山脉数组 mountainArr&#xff0c;请你返回能够使得 mountainArr.get(index) 等于 target 最小 的下标 index 值。 如果不存在这样的下标 index&#xff0c;就请返回 -1。 何为山脉数组&#xff1f;如果数组 A 是一个山脉数组的话&#xff0c;那它满足如下…

不能用蛮力法解决的问题_溆浦事蒙汉:脱贫攻坚绝不能心浮气躁骄傲自满疲倦厌战...

脱贫攻坚绝不能心浮气躁骄傲自满疲倦厌战——蒙汉到卢峰镇检查“四支队伍”集村部工作情况检查南华山村“四支队伍”集村部工作情况与大潭村贫困户舒采米座谈红网溆浦讯(记者 伍交才)8月28日&#xff0c;市人大常委会副主任、县委书记蒙汉到卢峰镇南华山村、大潭村检查“四支队…

Oracle 性能调优 概述

在过去的十年中&#xff0c; Oracle 已经成为世界上最专业的数据库之一。对于 IT 专家来说&#xff0c;就是要确保利用 Oracle 的强大特性来提高他们公司的生产力。最有效的方法之一是通过 Oracle 调优。它有大量的调整参数和技术来改进你的 Oracle 数据库的性能。 Oracle 调优…

LeetCode 801. 使序列递增的最小交换次数(动态规划)

1. 题目 我们有两个长度相等且不为空的整型数组 A 和 B 。 我们可以交换 A[i] 和 B[i] 的元素。注意这两个元素在各自的序列中应该处于相同的位置。 在交换过一些元素之后&#xff0c;数组 A 和 B 都应该是严格递增的&#xff08;数组严格递增的条件仅为A[0] < A[1] <…

mock模拟接口测试 vue_vue+mock.js实现前后端分离

之前都是介绍在普通项目中使用mock.js&#xff0c;那么本次就来介绍一下在vue中使用mock.js实现前后端分离。安装&#xff1a;npm install mockjs这里先写个小案例介绍一下具体使用&#xff0c;写法不规范&#xff0c;仅供参考。然后案例讲完后我们讲具体的规范使用那么一起来看…

进一步的去了解正则[一]

1 正则是什么. 请先看 http://www.phpchina.com/html/11/n-34811.html 几k 的解释后. 原地址已被更改&#xff0c;重新找了一个教程&#xff0c;请点击。 http://deerchao.net/tutorials/regex/regex.htm2 实例剖析.1. $str <FORM NAME"ADFA" ACTION"AS…

LeetCode 123. 买卖股票的最佳时机 III(动态规划)

1. 题目 给定一个数组&#xff0c;它的第 i 个元素是一支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。 注意: 你不能同时参与多笔交易&#xff08;你必须在再次购买前出售掉之前的股票&#xff09;。 示例 1: 输入: […

mysql异步复制参数_MySQL Replication(异步复制)基本原理

1、复制进程Mysql的复制(replication)是一个异步的复制&#xff0c;从一个Mysqlinstace(称之为Master)复制到另一个Mysqlinstance(称之Slave)。实现整个复制操作主要由三个进程完成的&#xff0c;其中两个进程在Slave(Sql进程和IO进程)&#xff0c;另外一个进程在Master(IO进程…

SQL Server 2005之PIVOT/UNPIVOT行列转换(转)

SQL Server2005引入了很多迎合开发者口味的新特性&#xff0c;虽然改动不大&#xff0c;却大大了减少了开发者的工作量&#xff0c;这种替用户考虑的开发思路&#xff0c;值得称赞。 在SQL Server2000中&#xff0c;要实现行列转换&#xff0c;需要综合利用聚合函数和动态SQL&a…

LeetCode 188. 买卖股票的最佳时机 IV(动态规划)

1. 题目 给定一个数组&#xff0c;它的第 i 个元素是一支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。 注意: 你不能同时参与多笔交易&#xff08;你必须在再次购买前出售掉之前的股票&#xff09;。 示例 1: 输入: [2…