为了避免边界问题,我们重新开一个数组,在两个端点加入哨兵1。此时数组下标为0到n+1

状态的定义如下,f[i][j] 表示将区间[i+1,j-1]的气球全部戳爆的最大收益。

我们要求的答案就是f[0][n+1] 将1到n个气球全部戳爆的最大收益。

一般的f[i][j] = max{f[i][k] + f[k][j] + nums[i]* nums[k] * nums[j] }

递推的时候,采用标准的区间递推的方式,最外层递推区间长度,这里区间最小长度为3

class Solution {
public:int maxCoins(vector<int>& nums) {int n = nums.size();vector<int> a(n+2, 1);        // 在左右两边补上一个哨兵for(int i = 1; i <= n; i++){a[i] = nums[i - 1];}// f[i][j] 表示将区间[i + 1, j - 1]全部打掉所获得得最大收益。vector<vector<int>> f(n + 2, vector<int>(n + 2));for(int len = 3; len <= n + 2; len++){for(int i = 0; i + len - 1 <= n + 1; i++){int j = i + len - 1;for(int k = i + 1; k < j; k++){f[i][j] = max(f[i][j], f[i][k] + f[k][j] + a[i] * a[k] * a[j]);}}}return f[0][n + 1];}
};

Leetcode 312. 戳气球(经典区间dp)相关推荐

  1. 312. 戳气球(区间dp)

    链接:https://leetcode-cn.com/problems/burst-balloons/ 首先这个长度为500的范围可以猜测出是O(n^3)区间dp 这里主要讲述为什么状态定义要定义成开 ...

  2. Leetcode.312 戳气球

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

  3. LeetCode 312.戳气球

    LeetCode 312.戳气球 有 n 个气球,编号为0 到 n - 1,每个气球上都标有一个数字,这些数字存在数组 nums 中. 现在要求你戳破所有的气球.戳破第 i 个气球,你可以获得 num ...

  4. leetcode: 312. 戳气球

    312. 戳气球 来源:力扣(LeetCode) 链接: https://leetcode.cn/problems/burst-balloons/ 有 n 个气球,编号为0 到 n - 1,每个气球上 ...

  5. LeetCode·312.戳气球·动态规划

    312.戳气球 题目 示例 思路 首先必须要说明,这个题目的状态转移方程真的比较巧妙,所以说如果你看了题目之后完全没有思路恰恰是正常的.虽然最优答案不容易想出来,但基本的思路分析是我们应该力求做到的. ...

  6. Java实现 LeetCode 312 戳气球

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

  7. Leetcode 312. 戳气球

    题目 首先必须要说明,这个题目的状态转移方程真的比较巧妙,所以说如果你看了题目之后完全没有思路恰恰是正常的.虽然最优答案不容易想出来,但基本的思路分析是我们应该力求做到的.所以本文会先分析一下常规思路 ...

  8. LeetCode 312. 戳气球(DP,难)

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

  9. LeetCode 312. 戳气球(Java)

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

最新文章

  1. 白话Elasticsearch67-不随意调节jvm和thread pool的原因jvm和服务器内存分配的最佳实践
  2. 在新浪潮中,服务教育是你的竞争利器
  3. django 中间件的使用
  4. 实现 VC 最小化到 托盘
  5. 双十一要来了,设计没思路看看案例
  6. 百度万亿流量的转发引擎 BFE 开源了!
  7. linux下 根目录扩展
  8. nyoj936蚂蚁的难题(X)
  9. macpro的IDEA常用快捷键~持续更新
  10. php中的字典数据类型,python中字典数据类型常用操作
  11. 视频水印怎么去除?超简单 千万不要错过
  12. 最新配资系统源码完美运行版+策略买点/A股系统
  13. android 3d动画绘制,Iyan 3d app
  14. 首马破四-IT男的健康分享
  15. 【夜读】让自己更幸福的8件小事
  16. 如何彻底关闭系统还原功能和删除系统还原点
  17. 中国煤制油市场产能需求与发展策略规划报告2022版
  18. Zookeeper C API 官方示例程序
  19. SPARK SHUFFLE中 ShuffleId BlockManagerId 以及 与ESS(External Shuffle Server)交互
  20. java.lang.NoSuchMethodException异常处理方法

热门文章

  1. python爬虫:搜狗微信公众号文章信息的采集(https://weixin.sogou.com/),保存csv文件
  2. CSDN博客论坛——读好书,畅想“我的IT成长路”活动【已完成】
  3. linux uwsgi 非root,nginx – 只能用root运行uwsgi
  4. (附源码)基于java的校园二手书籍交易平台 毕业设计131558
  5. webdriver options常用参数
  6. 小米8se怎么解屏幕锁_小米8 SE解锁system系统分区教程_小米8SE如何一键解锁系统分区...
  7. Raft 实现日志复制同步
  8. java.lang.ClassNotFoundException: org.springframework.boot.bind.RelaxedDataBinder
  9. React 源码系列 | React Context 详解
  10. 《网络攻防》 恶意代码分析