Burst Balloons

题目来源
怎么扎气球才能使得自己获得的硬币最多。
我只能想到中间的从小到大扎,最后把两边的从小到大扎。但是怎么用DP来做呢?想不到,看答案吧。
这道题也得从后往前推,想不到啊想不到,因为扎最后一个的时候,它的左右两边是确定的。所以可以有这么一个关系转移,
dp[left][right] = max(dp[left][right], dp[left][i] + dp[i][right] + nums[left] * nums[i] * nums[right])
代码如下:

class Solution {
public:
    int maxCoins(vector& nums) {
        vector newNums;
        newNums.push_back(1);
        for (int num : nums)
            newNums.push_back(num);
        newNums.push_back(1);
        int n = newNums.size();
        vector> dp(n, vector(n, 0));
        for (int k=2; k

你可能感兴趣的:(Burst Balloons)