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