现有 n 个气球按顺序排成一排,每个气球上标有一个数字,这些数字用数组 nums 表示。
现在要求你戳破所有的气球。每当你戳破一个气球 i 时,你可以获得 nums[left] * nums[i] * nums[right] 个硬币。 这里的 left 和 right 代表和 i 相邻的气球的序号。 注意当你戳破了气球 i 后,气球 left 和气球 right 就变成了相邻的气球。
求所能获得硬币数量的最大值。
注意:
(1) 你可以认为 nums[-1] = nums[n] = 1,但注意它们不是真实存在的所以并不能被戳破。
(2) 0 ≤ n ≤ 500, 0 ≤ nums[i] ≤ 100
例子:
输入 [3, 1, 5, 8]
输出 167
    nums = [3,1,5,8] --> [3,5,8] -->   [3,8]   -->  [8]  --> []
    coins =  3*1*5      +  3*5*8    +  1*3*8      + 1*8*1   = 167
详见:https://leetcode.com/problems/burst-balloons/description/

C++:

class Solution {
public:
int maxCoins(vector<int>& nums) {
int n=nums.size();
nums.insert(nums.begin(),1);
nums.push_back(1);
vector<vector<int>> dp(nums.size(),vector<int>(nums.size(),0));
for(int len=1;len<=n;++len)
{
for(int left=1;left<=n-len+1;++left)
{
int right=left+len-1;
for(int k=left;k<=right;++k)
{
dp[left][right]=max(dp[left][right],nums[left-1]*nums[k]*nums[right+1]+dp[left][k-1]+dp[k+1][right]);
}
}
}
return dp[1][n];
}
};

参考:https://www.cnblogs.com/grandyang/p/5006441.html

最新文章

  1. GPG终极指南(加密/签名)
  2. SCRIPT65535: 意外地调用了方法或属性访问 ie下不兼容 解决
  3. Java Security:keytool工具使用说明
  4. 浅谈Android Fragment嵌套使用存在的一些BUG以及解决方法
  5. Rest API 开发 学习笔记(转)
  6. poj3714Raid(平面最近点对)
  7. ROS TF——learning tf
  8. nyoj 79 导弹拦截
  9. c语言将2进制数转化为10进制数(栈的初始化,进栈,出栈)
  10. PPPoE Server Under Ubuntu/Debian
  11. 03-树1. List Leaves (25)
  12. Oracle RAC 实验环境RMAN备份v1.01
  13. Vue.js项目模板搭建
  14. ASP.NET Core的身份认证框架IdentityServer4--(1)服务配置
  15. BUNOJ 1011
  16. LabVIEW(九):程序结构中的分支结构和顺序结构
  17. 测试工程师的12最 作为测试猿的你是否都遇到过o_o ....
  18. 利用Python半自动化生成Nessus报告
  19. 从零开始学 Web 之 jQuery(八)each,多库共存,包装集,插件
  20. css 实用代码汇总

热门文章

  1. VS调试STL问题总结
  2. spring依赖注入中获取JavaBean
  3. intellij使用tomcat搭建servlet运行时环境
  4. Linux system log avahi-daemon[3640]: Invalid query packet.
  5. Django学习系列之Python+Xadmin
  6. centos7容量扩充
  7. Centos7下安装.bin格式
  8. C#的SplitPanel如何设置上下和左右
  9. MongoDB Helper的简单封装
  10. vs2013生成lib