Burst Balloons解题报告
来源:互联网 发布:wind金融数据 编辑:程序博客网 时间:2024/05/22 05:53
https://leetcode.com/problems/burst-balloons/
这道题我一直不知道怎么做,后来看了别人的答案。其实这就是用了dp的记事簿的方法,dp[i][j]表示i到j这个区间的最大取值。但是这个怎么算呢?还是得懂i到j之间一个一个的算。那这样想岂不是应该是回溯法?但是回溯法容易把一个问题重复计算多变,从而造成时间和空间的浪费。所以用记事簿法是比较合适的。
dp[i][j]=max(dp[i][j],dp[i][x-1]+nums[i-1]*nums[x]*nums[x][j+1]+dp[x+1][j])
这里还需要考虑遍历方向的问题,i是从小到大,j是从大到小,所以这是一个很典型的三角形的递归问题:
将数组分层,然后一层一层的遍历。
class Solution {public: int maxCoins(vector<int>& nums) { if(nums.size()==0) return 0; int n=nums.size(); nums.insert(nums.begin(),1); nums.insert(nums.end(),1); vector<vector<int> > dp(n+2,vector<int>(n+2,0)); for(int i=1;i<=n;i++){ for(int left=1;left<=n-i+1;left++){ int right=i+left-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]; }};
0 0
- Burst Balloons解题报告
- [leetcode] 312. Burst Balloons 解题报告
- LeetCode 312. Burst Balloons 解题报告
- [Leetcode] 312. Burst Balloons 解题报告
- Leetcode 452. Minimum Number of Arrows to Burst Balloons 射箭 解题报告
- LeetCode解题报告 452. Minimum Number of Arrows to Burst Balloons [medium]
- [LeetCode] 452. Minimum Number of Arrows to Burst Balloons 解题报告
- [Leetcode] 452. Minimum Number of Arrows to Burst Balloons 解题报告
- Burst Balloons
- Burst Balloons
- Burst Balloons
- Burst Balloons
- Burst Balloons
- Burst Balloons
- Burst Balloons
- Burst Balloons
- [解题报告]Balloons in a Box
- leetcode Burst Balloons
- Android5.0--Activity过度动画
- 剖析Elasticsearch集群系列第一篇 Elasticsearch的存储模型和读写操作
- Only the original thread that created a view hierarchy can touch its views异常处理思路
- 好词好句好景
- Linux下的make命令使用心得
- Burst Balloons解题报告
- 洛谷 P1197 [JSOI2008] 星球大战
- iOS 关闭UITabBarController双击返回根控制器
- python+appium的物理按键代码
- 第十一周练习--星座
- MFC六大核心机制之五、六:消息映射和命令传递
- 集合或数组的助手类(工具类,直接调用)
- 【NOIP2009】最优贸易
- [MongoDB]MongoDB的优缺点及与关系型数据库的比较