Leetcode-312 Burst Balloons(戳气球)

 1 #define maxn 1000000
 2 #define _for(i,a,b) for(int i = (a);i < (b);i ++)
 3 #define pb push_back
 4 class Solution
 5 {
 6     public:
 7         int dp[503][503];
 8         int ms(vector<int>& nums,int le,int ri)
 9         {
10
11             if(le==ri-1)
12                 return 0;
13             if(dp[le][ri]!=-1)
14                 return dp[le][ri];
15
16             int rnt = INT_MIN;
17             for(int i = le+1;i < ri;i ++)
18                 rnt = max(rnt,ms(nums,le,i)+ms(nums,i,ri)
19                           +nums[le]*nums[i]*nums[ri]);
20             return dp[le][ri] = rnt;
21         }
22         int maxCoins(vector<int>& nums)
23         {
24             memset(dp,-1,sizeof(dp));
25             vector<int> arr(nums.size()+2);
26             _for(i,0,nums.size())
27                 arr[i+1] = nums[i];
28             arr[0] = arr[nums.size()+1] = 1;
29             return ms(arr,0,nums.size()+1);
30         }
31 };

原文地址:https://www.cnblogs.com/Asurudo/p/10368945.html

时间: 2024-10-08 15:38:21

Leetcode-312 Burst Balloons(戳气球)的相关文章

312 Burst Balloons 戳气球

现有 n 个气球按顺序排成一排,每个气球上标有一个数字,这些数字用数组 nums 表示.现在要求你戳破所有的气球.每当你戳破一个气球 i 时,你可以获得 nums[left] * nums[i] * nums[right] 个硬币. 这里的 left 和 right 代表和 i 相邻的气球的序号. 注意当你戳破了气球 i 后,气球 left 和气球 right 就变成了相邻的气球.求所能获得硬币数量的最大值.注意:(1) 你可以认为 nums[-1] = nums[n] = 1,但注意它们不是真

LeetCode 312. Burst Balloons(戳气球)

参考:LeetCode 312. Burst Balloons(戳气球) java代码如下 class Solution { //参考:https://blog.csdn.net/jmspan/article/details/51208865 public int maxCoins(int[] nums) { int[] balls = new int[nums.length+2]; balls[0] = 1; balls[balls.length - 1] = 1; int[][] coins

Leetcode 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 r

312. Burst Balloons

/* * 312. Burst Balloons * 2016-7-4 by Mingyang */ public int maxCoins(int[] iNums) { int[] nums = new int[iNums.length + 2]; int n = 1; for (int x : iNums) if (x > 0) nums[n++] = x; nums[0] = nums[n++] = 1; int[][] dp = new int[n][n]; for (int k = 2

[LeetCode][Java]Burst Balloons

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.

【LeetCode】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 a

312. Burst Balloons - LeetCode

Question https://leetcode.com/problems/burst-balloons/description/ Solution 题目大意是,有4个气球,每个气球上有个数字,现在依次打这4个气球(可以看成两边还各有一个气球即1,3,1,5,8,1),第一次打5这处气球,你的得分是左边气球上的数乘右边气球上的数再乘被打气球上的数.按任意顺序打这4个气球,求最终得分最高的值. 思考:正向思考 反向思考: public int maxCoins(int[] nums) { //

452. Minimum Number of Arrows to Burst Balloons扎气球的个数最少

[抄题]: There are a number of spherical balloons spread in two-dimensional space. For each balloon, provided input is the start and end coordinates of the horizontal diameter. Since it's horizontal, y-coordinates don't matter and hence the x-coordinate

LeetCode | 0452. Minimum Number of Arrows to Burst Balloons用最少数量的箭引爆气球【Python】

LeetCode 0452. Minimum Number of Arrows to Burst Balloons用最少数量的箭引爆气球[Medium][Python][区间贪心] Problem LeetCode There are a number of spherical balloons spread in two-dimensional space. For each balloon, provided input is the start and end coordinates of