动态规划实战14 leetcode-312. Burst Balloons
这道题目是hard类题,笔者表示没碰到过第一次遇到真的很难写出来。
首先如果用暴力搜索的方法,对每种情况进行搜索判断,那么需要有n*n-1*n-2*....*1 = n! 显然这样的时间复杂度太高
那么接下来想到的就是如何用dp去解决问题。
如何确定状态和找出状态转移方程一直是dp问题的难点,这道题也不例外。
确定状态
c[i][j] = maxCoins(nums[i] - nums[j])
ans = c[1][n]
转移方程
c[i][j] = max {c[i][k-1]+nums[i-1]*nums[k]*nums[j+1]+c[k+1][j] i<=k<=j}
代码
public int maxCoins(int[] nums) {final int n = nums.length;int[] vals = new int[n + 2];for (int i = 0; i < n; ++i) vals[i + 1] = nums[i];vals[0] = vals[n + 1] = 1;int[][] dp = new int[n + 2][n + 2];for (int l = 1; l <= n; ++l)for (int i = 1; i + l <= n + 1; ++i) {int j = i + l - 1;int best = 0;for (int k = i; k <= j; ++k)best = Math.max(best, dp[i][k - 1] + vals[i - 1] * vals[k] * vals[j + 1] + dp[k + 1][j]);dp[i][j] = best;}return dp[1][n]; }
后记:这道题还是作者理解的一般,感觉难度确实有点大,建议读者有需要可以多看花花酱(google大佬)的视频去理解题意
动态规划实战14 leetcode-312. Burst Balloons相关推荐
- LeetCode 312. Burst Balloons(戳气球)
原题网址:https://leetcode.com/problems/burst-balloons/ Given n balloons, indexed from 0 to n-1. Each bal ...
- leetcode 312. Burst Balloons | 312. 戳气球(暴力递归->DP)
题目 https://leetcode.com/problems/burst-balloons/ 题解 好久不 DP 了,DP 一下吧,结果被坑了很久,看了答案. 递归的时候,我知道分成L,R两边,但 ...
- LeetCode 312. Burst Balloons
一看就是DP题,但是递推公式比较难想.为了简化问题,给 nums 开始和最后都加上1. 记 dp[i][j] 表示 nums[i~j] 能得到的最大coin. k 表示保留着的气球, dp[i][j] ...
- 【Leetcode】312. Burst Balloons
第一种思路可以采用backtracking.把一个list传递下去,每一步可以选择任意一个删除,然后再递归处理下一个,比较简单. public int maxCoins1(int[] nums) {i ...
- 312. Burst Balloons
题目: Given n balloons, indexed from 0 to n-1. Each balloon is painted with a number on it represented ...
- 312. Burst Balloons 戳气球
Title 有 n 个气球,编号为0 到 n-1,每个气球上都标有一个数字,这些数字存在数组 nums 中. 现在要求你戳破所有的气球.如果你戳破气球 i ,就可以获得 nums[left] * nu ...
- 452 Minimum Number of Arrows to Burst Balloons
452 Minimum Number of Arrows to Burst Balloons 文章目录 452 Minimum Number of Arrows to Burst Balloons 1 ...
- 深度学习实战14(进阶版)-手写文字OCR识别,手写笔记也可以识别了
大家好,我是微学AI,今天给大家带来手写OCR识别的项目.手写的文稿在日常生活中较为常见,比如笔记.会议记录,合同签名.手写书信等,手写体的文字到处都有,所以针对手写体识别也是有较大的需求.目前手写体 ...
- 牛客网数据库SQL实战14—— 从titles表获取按照title进行分组,注意对于重复的emp_no进行忽略。
牛客网数据库SQL实战14-- 从titles表获取按照title进行分组,注意对于重复的emp_no进行忽略. 题目描述 从titles表获取按照title进行分组,每组个数大于等于2,给出titl ...
- Leetcode.312 戳气球
题目链接 Leetcode.312 戳气球 题目描述 有 n个气球,编号为0到 n - 1,每个气球上都标有一个数字,这些数字存在数组 nums中. 现在要求你戳破所有的气球.戳破第 i 个气球,你可 ...
最新文章
- 【PC工具】github项目辅助下载工具,github高速下载
- spinbox 上下箭头事件_[React] 3 - 自动绑定 (事件绑定)
- 利用canvas来绘制一个会动的图画
- ios内购二次认证服务器代码
- 小猴子蓝裤黄袄的局域网聊天
- Spring beans配置方案(一) 学习笔记
- 为什么是深度神经网络而不是宽度神经网络?增加神经网络的深度相比于增加宽度有哪些优点?
- 乘法鉴相器的matlab仿真,Matlab中基于dq变换的锁相环仿真研究
- 计算机网络 同步传输和异步传输
- 基因大数据在生活中的应用
- 数据结构算法实现及例题
- 沁恒CH32F103C8T6(一): Keil5环境配置,示例运行和烧录
- 测试用例的思路---矿泉水瓶
- 山东大学 计算机人工智能2019级 认知科学与类脑计算 期末考试
- 数据结构思维导图——Java版
- Gitkraken收费问题解决
- Angular 组件类测试
- ubuntu系统查询硬盘的品牌、型号、序列号
- [Java实战][仅需1步]企业微信群机器人[0基础接入]
- revit应用程序无法启动_revit无法运行外部