爆裂气球的变种

时间:2017-03-18 20:20:53

标签: recursion dynamic-programming

给定N个气球,如果你用气球爆裂,你得到Ai-1 * Ai + 1个硬币,然后(i-1)th和第(i + 1)个气球相邻。找到您可以收集的最大硬币数量。 如果您有单个气球,那么您将获得写在其上的价值。 例 如果你有4个气球和相关的硬币是.... 1 2 3 4那么你最多可以获得20个。

1 个答案:

答案 0 :(得分:0)

在数组的两侧都附加权重为1的气球后,获得所有大小的连续子数组解决方案的dp方程。

对于大小1,答案为left * val1 * right

所以

dp[1][1] =131=3

dp[2][2]=315

dp[3][3]=158

dp[4][4]=581

现在为2号尺寸

dp[1][2] = max(Case1(1st element is last to burst) ,Case2(2nd element is last to burst))

Case1 = leftlastright + last2nd elementright = 135(由于领带首先被爆破,第二个已经消失)+315(因为第二个首先被爆破,第一个已经存在)

Case2 = 115 + 131因此,dp [1] [2](最多2个案例)为30。

代码:http://writeulearn.com/leetcode-solutions/#Burst_Balloons