312.戳气球


  • 将戳气球转换到添加气球,记忆搜索
  • slove(i,j):在开区间(i,j)全部填满气球得到的最多硬币数,两端val[i]、val[j]
cpp 复制代码
class Solution {
public:
    vector<vector<int>> ans;
    vector<int> val;

    int slove(int left,int right){
        if(left>=right-1) return 0;
        if(ans[left][right]!=-1) return ans[left][right];

        
        for(int i=left+1;i<right;i++){
            int sum=val[left]*val[i]*val[right];
            sum+=slove(left,i);
            sum+=slove(i,right);
            ans[left][right]=max(ans[left][right],sum);
        }
        return ans[left][right];
    }

    int maxCoins(vector<int>& nums) {
        int n=nums.size();
        val.resize(n+2);
        for(int i=1;i<=n;i++){
            val[i]=nums[i-1];
        }
        val[0]=val[n+1]=1;

        ans.resize(n+2,vector<int>(n+2,-1));
        return slove(0,n+1);
    }
};
相关推荐
W23035765734 分钟前
经典算法:打家劫舍(动态规划 + 回溯求最优解)C++ 超详细解析
c++·算法·动态规划
Dev7z4 分钟前
基于改进小波阈值的sEMG信号降噪与手势识别系统设计与实现
算法·手势识别·改进小波阈值·semg·信号降噪
灵感__idea7 小时前
Hello 算法:贪心的世界
前端·javascript·算法
澈2079 小时前
深入浅出C++滑动窗口算法:原理、实现与实战应用详解
数据结构·c++·算法
ambition202429 小时前
从暴力搜索到理论最优:一道任务调度问题的完整算法演进历程
c语言·数据结构·c++·算法·贪心算法·深度优先
cmpxr_9 小时前
【C】原码和补码以及环形坐标取模算法
c语言·开发语言·算法
qiqsevenqiqiqiqi9 小时前
前缀和差分
算法·图论
代码旅人ing9 小时前
链表算法刷题指南
数据结构·算法·链表
Yungoal9 小时前
常见 时间复杂度计算
c++·算法
不爱吃炸鸡柳10 小时前
单链表专题(完整代码版)
数据结构·算法·链表