# Hard-题目3：312. Burst Balloons

Given n balloons, indexed from 0 to n-1. Each balloon is painted with a number on it represented by array nums. You are asked to burst all the balloons. If the you burst balloon i you will get nums[left] * nums[i] * nums[right] coins. Here left and right are adjacent indices of i. After the burst, the left and right then becomes adjacent.
Find the maximum coins you can collect by bursting the balloons wisely.
Note:
(1) You may imagine nums[-1] = nums[n] = 1. They are not real therefore you can not burst them.
(2) 0 ≤ n ≤ 500, 0 ≤ nums[i] ≤ 100

Example:
Given [3, 1, 5, 8]
Return 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

dp[i][j]=min⁡(dp[i][k-1]+num[k-1]*num[k]*num[k+1]+dp[k+1][j]),k∈(i,j)

class Solution {
public:
int maxCoins(vector<int>& nums) {
for(int i=0;i<nums.size();++i){
if(nums[i]==0){
nums.erase(nums.begin()+i);
--i;
}
}
int n=nums.size();
if(n==0) return 0;
nums.insert(nums.begin(),1);
nums.insert(nums.end(),1);
int m=nums.size();
vector<vector<int>> dp(m,vector<int>(m,0));
for(int count=1;count<=n;++count){
for(int start=1;start+count-1<=n;++start){
int bestcoins=0;
for(int b=0;b<count;++b){
bestcoins=max(bestcoins,dp[start][start+b-1]+nums[start-1]*nums[start+b]*nums[start+count]+dp[start+b+1][start+count-1]);

}
dp[start][start+count-1]=bestcoins;
}

}
return dp[1][n];
}
};

36ms,beats 61.75%,众数44ms,22.51%
Cmershen的碎碎念：

• 本文已收录于以下专栏：

## leetcode 312. Burst Balloons 分析

• Swartz2015
• 2016年01月22日 14:39
• 4995

## LeetCode 312. Burst Balloons

• zly9923218
• 2016年04月05日 00:03
• 1861

## [leetcode] 312. Burst Balloons 解题报告

• qq508618087
• 2016年05月13日 15:35
• 2101

## LeetCode 312. Burst Balloons（戳气球）

• jmspan
• 2016年04月21日 14:39
• 1430

## LeetCode 题目：312. Burst Balloons

• sinat_37607788
• 2017年03月18日 20:59
• 109

## 【Leetcode】312. Burst Balloons

• u010900754
• 2017年02月22日 10:36
• 121

## 312. Burst Balloons

• u013480495
• 2016年04月30日 17:54
• 214

## leetcode -- Burst Balloons -- 重点dp

https://leetcode.com/problems/burst-balloons/类似于矩阵连乘的问题，但与house robber问题不一样。这里是2D dp，决策变量是在那个位置burst...
• xyqzki
• 2015年12月28日 12:50
• 3668

## Leetcode 312. Burst Balloons

• u010370157
• 2017年07月03日 16:53
• 68

## 312. Burst Balloons[hard]

Given n balloons, indexed from 0 to n-1. Each balloon is painted with a number on it represented b...
• owen__ou
• 2016年11月30日 22:28
• 34

举报原因： 您举报文章：Hard-题目3：312. Burst Balloons 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)