这道题目是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相关推荐

  1. LeetCode 312. Burst Balloons(戳气球)

    原题网址:https://leetcode.com/problems/burst-balloons/ Given n balloons, indexed from 0 to n-1. Each bal ...

  2. leetcode 312. Burst Balloons | 312. 戳气球(暴力递归->DP)

    题目 https://leetcode.com/problems/burst-balloons/ 题解 好久不 DP 了,DP 一下吧,结果被坑了很久,看了答案. 递归的时候,我知道分成L,R两边,但 ...

  3. LeetCode 312. Burst Balloons

    一看就是DP题,但是递推公式比较难想.为了简化问题,给 nums 开始和最后都加上1. 记 dp[i][j] 表示 nums[i~j] 能得到的最大coin. k 表示保留着的气球, dp[i][j] ...

  4. 【Leetcode】312. Burst Balloons

    第一种思路可以采用backtracking.把一个list传递下去,每一步可以选择任意一个删除,然后再递归处理下一个,比较简单. public int maxCoins1(int[] nums) {i ...

  5. 312. Burst Balloons

    题目: Given n balloons, indexed from 0 to n-1. Each balloon is painted with a number on it represented ...

  6. 312. Burst Balloons 戳气球

    Title 有 n 个气球,编号为0 到 n-1,每个气球上都标有一个数字,这些数字存在数组 nums 中. 现在要求你戳破所有的气球.如果你戳破气球 i ,就可以获得 nums[left] * nu ...

  7. 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 ...

  8. 深度学习实战14(进阶版)-手写文字OCR识别,手写笔记也可以识别了

    大家好,我是微学AI,今天给大家带来手写OCR识别的项目.手写的文稿在日常生活中较为常见,比如笔记.会议记录,合同签名.手写书信等,手写体的文字到处都有,所以针对手写体识别也是有较大的需求.目前手写体 ...

  9. 牛客网数据库SQL实战14—— 从titles表获取按照title进行分组,注意对于重复的emp_no进行忽略。

    牛客网数据库SQL实战14-- 从titles表获取按照title进行分组,注意对于重复的emp_no进行忽略. 题目描述 从titles表获取按照title进行分组,每组个数大于等于2,给出titl ...

  10. Leetcode.312 戳气球

    题目链接 Leetcode.312 戳气球 题目描述 有 n个气球,编号为0到 n - 1,每个气球上都标有一个数字,这些数字存在数组 nums中. 现在要求你戳破所有的气球.戳破第 i 个气球,你可 ...

最新文章

  1. 【PC工具】github项目辅助下载工具,github高速下载
  2. spinbox 上下箭头事件_[React] 3 - 自动绑定 (事件绑定)
  3. 利用canvas来绘制一个会动的图画
  4. ios内购二次认证服务器代码
  5. 小猴子蓝裤黄袄的局域网聊天
  6. Spring beans配置方案(一) 学习笔记
  7. 为什么是深度神经网络而不是宽度神经网络?增加神经网络的深度相比于增加宽度有哪些优点?
  8. 乘法鉴相器的matlab仿真,Matlab中基于dq变换的锁相环仿真研究
  9. 计算机网络 同步传输和异步传输
  10. 基因大数据在生活中的应用
  11. 数据结构算法实现及例题
  12. 沁恒CH32F103C8T6(一): Keil5环境配置,示例运行和烧录
  13. 测试用例的思路---矿泉水瓶
  14. 山东大学 计算机人工智能2019级 认知科学与类脑计算 期末考试
  15. 数据结构思维导图——Java版
  16. Gitkraken收费问题解决
  17. Angular 组件类测试
  18. ubuntu系统查询硬盘的品牌、型号、序列号
  19. [Java实战][仅需1步]企业微信群机器人[0基础接入]
  20. revit应用程序无法启动_revit无法运行外部

热门文章

  1. android重写view和viewgroup的区别
  2. 基于raphael 的图形变化
  3. android 设为锁屏壁纸,修改设置Android锁屏壁纸为系统默认的锁屏壁纸
  4. SpringBoot自动装配原理与自己写一个starter
  5. Spring的9种设计模式(三)总结
  6. 多线程之Lock锁和读写锁ReadWriteLock
  7. 华为不同vlan单臂路由的配置
  8. Debian 鼠标左右手
  9. Linux下Apache、PHP、MySQL默认安装路径
  10. jQuery温习篇---强大的JQuery选择器