-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathBurstBalloons.java
29 lines (29 loc) · 971 Bytes
/
BurstBalloons.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public class Solution {
/*
* @param nums: A list of integer
* @return: An integer, maximum coins
*/
public int maxCoins(int[] nums) {
if(nums == null || nums.length == 0) return 0;
int n = nums.length;
//开数组到n+2是为了保证k-1 k+1不溢出
int[][] dp = new int[n+2][n+2];
for(int i=1;i<=n;i++){
int left = i-2 >= 0?nums[i-2]:1;
int right = i < n?nums[i]:1;
dp[i][i] = left*nums[i-1]*right;
}
for(int len = 2;len<=n;len++){
for(int i=1;i+len-1<=n;i++){
int j = i+len-1;
int left = i-2 >= 0?nums[i-2]:1;
int right = j < n?nums[j]:1;
dp[i][j] = Integer.MIN_VALUE;
for(int k=i;k<=j;k++){
dp[i][j] = Math.max(dp[i][j], dp[i][k-1]+dp[k+1][j]+left*right*nums[k-1]);
}
}
}
return dp[1][n];
}
}