d(i,j)为砸掉i+1到j-1之间的蛋的最大分数。
因此注意下面代码的d(i,j)是开区间,不包含端点i和j
Python代码
class Solution:
def maxCoins(self, nums):
nums = [1] + nums + [1]
length = len(nums)
dp = [[0] * length for _ in range(length)]
for c in range(2, length):
for j in range(length - c):
for k in range(j + 1, j + c):
dp[j][j + c] = max(dp[j][j + c], dp[j][k] + dp[k][j + c] + nums[j] * nums[k] * nums[j + c])
return dp[0][length - 1]