文章目录

  • 1. 题目
  • 2. 解题

1. 题目

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

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

示例 1:
输入:[1, 5, 2]
输出:False
解释:一开始,玩家1可以从1和2中进行选择。
如果他选择 2(或者 1 ),那么玩家 2 可以从 1(或者 2 )和 5 中进行选择。
如果玩家 2 选择了 5 ,那么玩家 1 则只剩下 1(或者 2 )可选。
所以,玩家 1 的最终分数为 1 + 2 = 3,而玩家 2 为 5 。
因此,玩家 1 永远不会成为赢家,返回 False 。示例 2:
输入:[1, 5, 233, 7]
输出:True
解释:玩家 1 一开始选择 1 。
然后玩家 2 必须从 5 和 7 中进行选择。
无论玩家 2 选择了哪个,玩家 1 都可以选择 233 。最终,玩家 1(234 分)比玩家 2(12 分)获得更多的分数,所以返回 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阿明),一起加油、一起学习进步!

LeetCode 486. 预测赢家(博弈DP)相关推荐

  1. leetcode - 486. 预测赢家

    给定一个表示分数的非负整数数组. 玩家1从数组任意一端拿取一个分数,随后玩家2继续从剩余数组任意一端拿取分数,然后玩家1拿,--.每次一个玩家只能拿取一个分数,分数被拿取之后不再可取.直到没有剩余分数 ...

  2. leetcode486. 预测赢家(dp)

    给定一个表示分数的非负整数数组. 玩家 1 从数组任意一端拿取一个分数,随后玩家 2 继续从剩余数组任意一端拿取分数,然后玩家 1 拿,-- .每次一个玩家只能拿取一个分数,分数被拿取之后不再可取.直 ...

  3. 486. Predict the Winner | 486. 预测赢家(博弈论)

    题目 https://leetcode.com/problems/predict-the-winner/ 题解 这道题和 leetcode 877. Stone Game | 877. 石子游戏(递归 ...

  4. LeetCode - 486. Predict the Winner(排成一条线的纸牌博弈问题)

    LeetCode - 486. Predict the Winner(排成一条线的纸牌博弈问题) 递归解法 动态规划解法 题目链接 题目 递归解法 定义递归函数f[i,j],表示的是如果arr[i.. ...

  5. LeetCode 1690. 石子游戏 VII(博弈DP)

    文章目录 1. 题目 2. 解题 1. 题目 石子游戏中,爱丽丝和鲍勃轮流进行自己的回合,爱丽丝先开始 . 有 n 块石子排成一排.每个玩家的回合中,可以从行中 移除 最左边的石头或最右边的石头,并获 ...

  6. 天池 在线编程 双向取数(博弈DP)

    文章目录 1. 题目 2. 解题 1. 题目 https://tianchi.aliyun.com/oj/245679029019779851/254275128279634585 有一个长度为n的数 ...

  7. *【CodeForces - 859C 】Pie Rules (博弈dp,时光倒流)

    题干: You may have heard of the pie rule before. It states that if two people wish to fairly share a s ...

  8. LeetCode 85. 最大矩形(DP/单调递增栈,难)

    文章目录 1. 题目 2. 解题 2.1 DP 2.2 单调递增栈 1. 题目 给定一个仅包含 0 和 1 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积. 示例: 输入: [[" ...

  9. LeetCode 221. 最大正方形(DP)

    文章目录 1. 题目信息 2. 解题 1. 题目信息 在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积. 示例: 来源:力扣(LeetCode) 链接:https:/ ...

最新文章

  1. 宏基因组教程Metagenomics Tutorial (HUMAnN2)
  2. Oracle 基础篇 --- 表空间的操作
  3. Java 项目权威排名:Spring生态抢镜,Gradle战胜Maven排第2,点击查看更多...
  4. python浮点数运算问题_python基础教程之. 浮点数运算:问题和局限
  5. mysql php加速_mysql存储过程加速 - mysql数据库栏目 - 自学php
  6. 安全狗服云手机端上架各大手机应有市场
  7. Perl语言入门——Perl变量简介
  8. 缓存数据一致性-解决方案
  9. NXP JN5169使用硬件I2C从机收发数据
  10. matlab线性方程组画图,线性方程组求解在Excel和Matlab中的实现
  11. 短文阅读1:Entire Space Multi-Task Model: An Effective Approach for Estimating Post-Click Conversion Rate
  12. 锆石 Hello FPGA 笔记——part1 数字电路篇
  13. used in key specification without a key length
  14. 机器学习算法基础20210504-0529
  15. MATLAB中的一些小技巧(2) - [MATLAB]
  16. wps excel查找不定位_【WPS神技能】如何在WPSExcel表格中批量查找两列数据的不同?...
  17. HashTable 使用
  18. 钉钉通知-调用钉钉发送企业内部消息开发
  19. websocket连接不稳定_帮你解决WiFi卡顿:拒绝连接不稳定、网速慢
  20. 2021-11-2记一次win7下python两种版本的完全安装

热门文章

  1. 【解决】如何打开.ipynb文件
  2. postgis 导出 栅格_postgis常见的空间数据的导入导出
  3. 用计算机计算出密码,自带计算器的密码
  4. 第一季4:Hi3518E_SDK_Vx.x.x.x的SDK目录结构
  5. 字符串类型、结构体、共用体、枚举、container宏、内存来源
  6. mysql 优化之 is null ,is not null 索引使用测试
  7. VS 使用 :新建项目
  8. 【学习总结】Markdown 使用的正确姿势
  9. 进阶攻略|前端最全的框架总结
  10. jquery hover事件中 fadeIn和fadeOut 效果不能及时停止