Burst Balloons
https://leetcode.com/problems/burst-balloons/description/
nums = \[3,1,5,8\] --> \[3,5,8\] --> \[3,8\] --> \[8\] --> \[\]
Thoughts
Code
/*
* @lc app=leetcode id=312 lang=cpp
*
* [312] Burst Balloons
*/
class Solution {
public:
int maxCoins(vector<int>& nums) {
const int N = nums.size();
vector<int> coins(N + 2);
coins[0] = coins[N + 1] = 1;
for (int i = 0; i < N; ++i) {
coins[i + 1] = nums[i];
}
vector<vector<int>> dp(N + 2, vector<int>(N + 2));
for (int i = N - 1; i >= 0; --i) {
for (int j = i + 2; j <= N + 1; ++j) {
for (int k = i + 1; k <= j - 1; ++k) {
dp[i][j] = max(dp[i][j], coins[i] * coins[k] * coins[j] + dp[i][k] + dp[k][j]);
}
}
}
return dp[0][N + 1];
}
};
Analysis
Last updated