312. Burst Balloons Hard
来源:互联网 发布:乐乎公寓ifeng 编辑:程序博客网 时间:2024/06/03 21:37
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
思路:本题为最优解问题,可以考虑使用动态规划。 观察可知,每一次爆的气球可以把原来的数组分为两部分,一部分为所爆气球左侧的,一部分为右侧的,这样的左右两侧将互不干扰。这样可以得到问题的子问题,找到每一部分的最大值,由此得到动态规划:设定一个result[j][k],表示从气球j到k的最终计算结果的最大值,最后result[0][nums.size() + 1]表示最终结果。(由note 1,将原数组的左侧和右侧均增加一个数字为1的气球)。
class Solution {public: int maxCoins(vector<int>& nums) { int temp[nums.size() + 2]; temp[0] = 1; temp[nums.size() + 1] = 1; for (int i = 0; i < nums.size(); i++) { temp[i + 1] = nums[i]; } int result[nums.size() + 2][nums.size() + 2]; for (int i = 0; i < nums.size() + 2; i++) { for (int j = 0; j < nums.size() + 2; j++) { result[i][j] = 0; } } for (int i = 2; i < nums.size() + 2; i++) { for (int j = 0; j + i < nums.size() + 2; j++) { int k = j + i; for (int m = j + 1; m < k; m++) { result[j][k] = max(result[j][m] + temp[j] * temp [m] * temp[k] + result[m][k], result[j][k]); } } } return result[0][nums.size() + 1]; }};
- [hard]312. Burst Balloons
- 312. Burst Balloons[hard]
- 312. Burst Balloons Hard
- LeetCode 312. Burst Balloons 【hard】
- Leetcode 312. Burst Balloons[hard]
- 312. Burst Balloons (Hard)
- LeetCode 312. Burst Balloons[hard]
- Hard-题目3:312. Burst Balloons
- LeetCode[312. Burst Balloons] 难度[hard]
- LeetCode 312. Burst Balloons(Hard)
- 312. Burst Balloons【Hard】 区间动归
- LeetCode #312 - Burst Balloons - Hard
- 312. Burst Balloons 难度:hard 类别:分治、动态规划
- 题解——Leetcode 312. Burst Balloons 难度:Hard
- Burst Balloons——Difficulty:Hard
- leetcode 312. Burst Balloons
- [leetcode] 312. Burst Balloons
- LeetCode 312. Burst Balloons
- 很全的maven介绍
- Linux awk的用法
- Android跨应用启动
- MAC下搭建PHP客户端,测试发布话题
- Android 网络详解(二) HTTP协议
- 312. Burst Balloons Hard
- CSS3制作旋转导航
- xtream
- log4j-over-slf4j与slf4j-log4j12共存stack overflow异常分析
- Android Studio(2.3.1)常用设置
- Java 类加载器
- Web 网页通信之长连接、长轮询
- selenium ActionChains API
- 武汉大学测绘学院工测带缓和曲线的圆曲线