LeetCode 486. 预测赢家(博弈DP)

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

给定一个表示分数的非负整数数组。
玩家 1 从数组任意一端拿取一个分数,随后玩家 2 继续从剩余数组任意一端拿取分数,然后玩家 1 拿,…… 。
每次一个玩家只能拿取一个分数,分数被拿取之后不再可取。直到没有剩余分数可取时游戏结束。
最终获得分数总和最多的玩家获胜

给定一个表示分数的数组,预测玩家1是否会成为赢家
你可以假设每个玩家的玩法都会使他的分数最大化。

示例 1:
输入:[1, 5, 2]
输出:False
解释:一开始,玩家1可以从12中进行选择。
如果他选择 2(或者 1 ),那么玩家 2 可以从 1(或者 2 )和 5 中进行选择。
如果玩家 2 选择了 5 ,那么玩家 1 则只剩下 1(或者 2 )可选。
所以,玩家 1 的最终分数为 1 + 2 = 3,而玩家 25 。
因此,玩家 1 永远不会成为赢家,返回 False 。示例 2:
输入:[1, 5, 233, 7]
输出:True
解释:玩家 1 一开始选择 1 。
然后玩家 2 必须从 57 中进行选择。
无论玩家 2 选择了哪个,玩家 1 都可以选择 233 。最终,玩家 1234 分)比玩家 212 分)获得更多的分数,所以返回 True,表示玩家 1 可以成为赢家。提示:
1 <= 给定的数组长度 <= 20.
数组里所有分数都为非负数且不会大于 10000000 。
如果最终两个玩家的分数相等,那么玩家 1 仍为赢家。

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

2. 解题

类似题目:
LeetCode 464. 我能赢吗(状态压缩+记忆化递归 / 博弈)
LeetCode 877. 石子游戏(DP)
LeetCode 1140. 石子游戏 II(DP)*
LeetCode 1406. 石子游戏 III(DP)
LeetCode 1563. 石子游戏 V(DP)
LeetCode 5447. 石子游戏 IV hard(博弈DP)
LeetCode 1025. 除数博弈(动态规划)
LeetCode 5611. 石子游戏 VI(贪心)
LeetCode 5627. 石子游戏 VII(博弈DP)
天池 在线编程 双向取数(博弈DP)

  • dp[i][j] 表示剩余石子区间为 [i,j] 时,当前玩家与另一个玩家的最大分差
class Solution {
public:bool PredictTheWinner(vector<int>& nums) {int n = nums.size(), i, j;vector<vector<int>> dp(n, vector<int>(n, INT_MIN));for(i = 0; i < n; ++i)dp[i][i] = nums[i];for(int len = 1; len < n; ++len){for(i = 0; i+len < n; ++i){dp[i][i+len] = max(nums[i]-dp[i+1][i+len], nums[i+len]-dp[i][i+len-1]);//		当前选手		拿左边,减去下一个选手的分差;			拿右边,减去下一个选手的分差}}return dp[0][n-1] >= 0;// 当前选手(先手)分差多或者等于,win}
};

4 ms 8 MB

状态空间只与上一行有关,可以压缩,代码略。


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

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

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

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

相关文章

R语言第七讲 线性回归分析案例

题目 MASS 库中包含 Boston (波士顿房价)数据集&#xff0c;它记录了波士顿周围 506 个街区的 medv (房价中位数)。我们将设法用 13 个预测变量如 rm (每栋住宅的平均房间数)&#xff0c; age (平均房 龄)&#xff0c; lstat (社会经济地位低的家庭所占比例)等来预测 medv (房价…

01.神经网络和深度学习 W4.深层神经网络(作业:建立你的深度神经网络+图片猫预测)

文章目录作业1. 建立你的深度神经网络1. 导入包2. 算法主要流程3. 初始化3.1 两层神经网络3.2 多层神经网络4. 前向传播4.1 线性模块4.2 线性激活模块4.3 多层模型5. 损失函数6. 反向传播6.1 线性模块6.2 线性激活模块6.3 多层模型6.4 梯度下降、更新参数作业2. 深度神经网络应…

浅析调用android的content provider(一)

在Android下&#xff0c;查询联系人、通话记录等&#xff0c;需要用到content provider。但是&#xff0c;调用content provider时&#xff0c;Android框架内部是如何做的呢&#xff1f;这一系列文章就是解决这个问题的&#xff0c;所采用的开发环境及源码都是基于Android 1.6版…

R语言第七讲 线性回归分析案例续

题目 MASS 库中包含 Boston (波士顿房价)数据集&#xff0c;它记录了波士顿周围 506 个街区的 medv (房价中位数)。我们将设法用 13 个预测变量如 rm (每栋住宅的平均房间数)&#xff0c; age (平均房 龄)&#xff0c; lstat (社会经济地位低的家庭所占比例)等来预测…

LeetCode 1129. 颜色交替的最短路径(BFS)

文章目录1. 题目2. 解题1. 题目 在一个有向图中&#xff0c;节点分别标记为 0, 1, ..., n-1。 这个图中的每条边不是红色就是蓝色&#xff0c;且存在自环或平行边。 red_edges 中的每一个 [i, j] 对表示从节点 i 到节点 j 的红色有向边。 类似地&#xff0c;blue_edges 中的每…

web.config文件之自定义错误节

web.config文件之自定义错误节 大家都知道&#xff0c;在开发asp.net应用程序时&#xff0c;通过web.config文件可以配置在执行 Web 请求期间发生未处理的错误时&#xff0c;ASP.NET 显示信息的方式。下面是一个典型的基本配置&#xff1a; ?<system.web><customErro…

linux中UDP程序流程、客户端、服务端

UDP--- 用户数据报协议&#xff08;User Datagram Protocol&#xff09;&#xff0c;是一个无连接的简单的面向数据报的运输层协议。 优点&#xff1a;传输速度快 缺点&#xff1a;不可靠 socket的中文意思是接插件&#xff1a; 创建socket 在 Python 中 使用socket 模块的类 …

LeetCode 1041. 困于环中的机器人

文章目录1. 题目2. 解题1. 题目 在无限的平面上&#xff0c;机器人最初位于 (0, 0) 处&#xff0c;面朝北方。机器人可以接受下列三条指令之一&#xff1a; “G”&#xff1a;直走 1 个单位“L”&#xff1a;左转 90 度“R”&#xff1a;右转 90 度 机器人按顺序执行指令 ins…

Javascript实现合并单元格

Web上的报表或表格应用&#xff0c;较为复杂的表格操作一般都比较难实现&#xff0c;这里介绍一下用ComponentOne Studio for ASP.NET Wijmo中的SpreadJS&#xff0c;可以实现一些较为复杂的表格操作&#xff0c;个人认为他模仿桌面应用的操作体验非常不错&#xff0c;虽然我并…

LeetCode 1039. 多边形三角剖分的最低得分(区间DP)

文章目录1. 题目2. 解题1. 题目 给定 N&#xff0c;想象一个凸 N 边多边形&#xff0c;其顶点按顺时针顺序依次标记为 A[0], A[i], ..., A[N-1]。 假设您将多边形剖分为 N-2 个三角形。 对于每个三角形&#xff0c;该三角形的值是顶点标记的乘积&#xff0c;三角剖分的分数是…

02.改善深层神经网络:超参数调试、正则化以及优化 W1.深度学习的实践层面

文章目录1. 训练&#xff0c;验证&#xff0c;测试集2. 偏差&#xff0c;方差3. 机器学习基础4. 正则化5. 为什么正则化预防过拟合6. dropout&#xff08;随机失活&#xff09;正则化7. 理解 dropout8. 其他正则化9. 归一化输入10. 梯度消失 / 梯度爆炸11. 神经网络权重初始化1…

R语言第十讲 逻辑斯蒂回归

模型函数介绍 Logistic Regression 虽然被称为回归&#xff0c;但其实际上是分类模型&#xff0c;并常用于二分类。Logistic Regression 因其简单、可并行化、可解释强深受工业界喜爱。 Logistic 回归的本质是&#xff1a;假设数据服从这个Logistic 分布&#xff0c;然后使用极…

阿里云 超级码力在线编程大赛初赛 第3场 题目4. 完美字符串

文章目录1. 题目2. 解题1. 题目 描述 定义若一个字符串的每个字符均为’1’&#xff0c;则该字符串称为完美字符串。 给定一个只由’0’和’1’组成的字符串s和一个整数k。 你可以对字符串进行任意次以下操作 选择字符串的一个区间长度不超过k的区间[l, r]&#xff0c;将区间…

R语言第十一讲 决策树与随机森林

概念 决策树主要有树的回归和分类方法&#xff0c;这些方法主要根据分层和分割 的方式将预测变量空间划分为一系列简单区域。对某个给定待预测的观 测值&#xff0c;用它所属区域中训练集的平均值或众数对其进行预测。 基于树的方法简便且易于解释。但预测准确性通常较低。如图…

python面试题汇总(1)

1. (1)python下多线程的限制以及多进程中传递参数的方式   python多线程有个全局解释器锁&#xff08;global interpreter lock&#xff09;&#xff0c;这个锁的意思是任一时间只能有一个线程使用解释器&#xff0c;跟单cpu跑多个程序一个意思&#xff0c;大家都是轮着用的&…

阿里云 超级码力在线编程大赛初赛 第3场 题目1. 最大公倍数

文章目录1. 题目2. 解题1. 题目 来源&#xff1a;https://tianchi.aliyun.com/oj/15179470890799741/85251759933690467 2. 解题 看的大佬的解题&#xff0c;很强&#xff01; class Solution { public:/*** param a: Left margin* param b: Right margin* return: return t…

Javascript:前端利器 之 JSDuck

背景 文档的重要性不言而喻&#xff0c;对于像Javascript这种的动态语言来说就更重要了&#xff0c;目前流行的JDoc工具挺多的&#xff0c;最好的当属JSDuck&#xff0c;可是JSDuck在Windows下的安装非常麻烦&#xff0c;这里就写下来做个备忘。 JSDuck生成的文档效果 JSDuck安…

Ubuntu 扩展内存或断电之后卡在 /dev/sda1 clean 和 /dev/sda1 recovering journal

当ubuntu虚拟机硬盘空间不够用的时候&#xff0c;往往会出现新增扩展硬盘空间之后&#xff0c;出现开机卡死的现象。 通过查阅相关资料&#xff0c;排坑如下&#xff1a; 一、原VM硬盘空间已满 当原VM硬盘空间已满的情况下&#xff0c;千万不要重启或者关机操作&#xff0c;极…

阿里云 超级码力在线编程大赛初赛 第3场 题目2. 房屋染色(DP)

文章目录1. 题目2. 解题1. 题目 有n个房子在一列直线上&#xff0c;现在Bob需要给房屋染色&#xff0c;共有k种颜色。 每个房屋染不同的颜色费用也不同&#xff0c;Bob希望有一种染色方案使得相邻的房屋颜色不同。 但Bob计算了使相邻房屋颜色不同的最小染色费用&#xff0c;发…