leetcode877.StoneGame
题目:一个数组,俩人从里面取数,要么从最左边取,要么从最右边取,直至把所有数取完,若第一个人取得所有数之和比第二个人取得数之和大,则为true
输入:一个整型数组
输出:true or false
别人思路:
使用动态规划的思想:设dp[i][j]表示从piles[i]到piles[j]你可以比对手多得的最多的分数。这样我们的最终目标是dp[0][n-1]。
现在我们需要确定转移方程和初始条件。在piles[i]~piles[j]中,你可以选择piles[i]或者piles[j]:
如果你选择了piles[i],那么你的对手就会从piles[i+1]~piles[j]中得到最多的分数,分数差值为piles[i]-dp[i+1][j].(题目要求都发挥最佳水平,所以对于对手而言dp的含义一样。,他会从剩下的piles中选择最多的分数,所以两者做减法。)
如果你选择了piles[j],分数差值为piles[j] - dp[i][j-1].
所以状态转移方程为:
dp[i][j] = max(piles[i] - dp[i + 1][j], piles[j] - dp[i][j - 1])
class solution{public boolean stoneGame(int[] piles) {int dp[][] = new int[piles.length][piles.length] ;for(int i=0;i<piles.length;i++){dp[i][i] = piles[i] ;}for(int j=1;j<piles.length;j++){for(int i=0;i<piles.length-j;i++){dp[i][i+j] = Math.max(piles[i] - dp[i+1][i+j], piles[i+j] - dp[i][i+j-1]) ;}}return dp[0][dp.length-1] > 0 ;}}
leetcode877.StoneGame相关推荐
- leetcode877
leetcode877 Stone Game 思路:贪心策略显然不对 因此需要列举所有情况 使用dp降低时间复杂度(此题有数学解 可以证明Alex一定赢) alex和lee是在头和尾轮流拿石头 dp记 ...
- LeetCode-877 石子游戏
动态规划 LeetCode-877 石子游戏 题目链接:LeetCode-877 题目大意:从一排石子堆最左面或者最右面取石子 每次一堆必须全部取走 最后石子总数多的获胜 问最后先手可不可以获胜 解题 ...
- 动态规划---石子游戏
动态规划---石子游戏 石子游戏(leetcode877) 石子游戏(leetcode1140) 石子游戏(leetcode1686) 石子游戏(leetcode877) 题目描述 亚历克斯和李用几堆 ...
- Acwing LeetCode 题目分类——配套基础课进阶课
LeetCode 题目分类--配套基础课进阶课 1.基础 二分(满足一个条件的最值问题) LeetCode33 https://leetcode.com/problems/search-in-rota ...
- 一道看完答案你会觉得很沙雕的「动态规划算法题」
这道算法题其实并不难,如果你把文章从头到尾看完的话基本上能看懂,但如果你看到最后的话大概率会说一句:这是什么沙雕题目?! 题目来源于 LeetCode 第 877 号问题:石子游戏. 为了更好理解,我 ...
- leetcode算法题--石子游戏
原题链接:https://leetcode-cn.com/problems/stone-game/ 本题是预测赢家低配版,还限制了石子堆数是偶数,石子总数为奇数 1.动态规划 bool stoneGa ...
- 互联网大厂算法面试题集合,看完我跪了!
来源:https://github.com/azl397985856/leetcode 介绍 leetcode 题解,记录自己的 leetcode 解题之路. 本仓库目前分为五个部分: 第一个部分是 ...
- Nim 游戏 、⽯头游戏1、石头游戏2
Nim 游戏 .⽯头游戏1.石头游戏2 文章目录 Nim 游戏 .⽯头游戏1.石头游戏2 **一:Nim 游戏** **二:⽯头游戏** **三.石头游戏2** **方法一:DP 函数** **方法二 ...
- leetcode 877. Stone Game | 877. 石子游戏(递归/动态规划/数学解法)
题目 https://leetcode.com/problems/stone-game/ 题解 搜了一下 stone game,结果.. 进入正题: 一开始写了个递归,超时了.没想出怎么写 dp,看了 ...
最新文章
- Python matplotlib可视化:在Matplotlib中为坐标轴刻度添加自定义符号(例如,货币符号¥$等)、水平条形图(horizontal bar)
- C语言函数集(十四)
- [NOI2008]志愿者招募
- html转word保留样式_译员必备 | 初识Word格式标记
- Python中if __name__ == '__main__':作用
- linux修复uefi启动文件,uefi-gpt-linux修复grub rescue
- 解码Java.Lang.OutOfMemoryError:PermGen空间
- linux的程序员计算器,linux中的计算器
- 【Linux】kali 2019.4 安装中文输入法
- if命令在HTML语言中 隐藏部分内容,vuejs使用v-if隐藏不需要的内容,生成的html标签中有!-----,请问怎样去掉这些注释?...
- 用mysqlslap对MySQL进行压力测试
- 安卓系统校园招聘平台APP答辩PPT免费下载
- 6.1(数学:五角数)
- 奇异值分解SVD与在降维中的应用
- ZZULIOJ.1706: 神奇的编码
- 测试方法之JUnit单元测试
- DOSBOX 0.74模拟器安装Windows 95
- 【百度】怎么使用cookie登陆百度账号
- 区块链≠分布式账本,别再傻傻分不清
- python wms系统源码_java开发的wms仓库管理系统源码(PC+Android)