动态规划 Leetcode 188 买卖股票的最佳时机IV

买卖股票的最佳时机IV

Leetcode 188

学习记录自代码随想录

要点:1.类似于Leetcode 121这道题,只不过多了几轮,循坏递推就可以

cpp 复制代码
class Solution {
public:
    int maxProfit(int k, vector<int>& prices) {

        int n = prices.size();
       // 1.dp[i][2*k]
       vector<vector<int>> dp(n, vector<int>(2*k, 0));
       // 2.递推公式:dp[i][0] = max(dp[i-1][0], -prices[i])
       //            dp[i][1] = max(dp[i-1][1], dp[i-1][0]+prices[i])
       //            dp[i][2] = max(dp[i-1][2], dp[i-1][1]-prices[i])
       //            dp[i][3] = max(dp[i-1][3], dp[i-1][2]+prices[i])
       //            ............
       // 3.初始化:dp[0][0], dp[0][2], dp[0][4]............为-prices[0],其余为0
       for(int i = 0; i < k; i++){
           dp[0][2*i] = -prices[0];
       }
       // 4.正向遍历
       for(int i = 1; i < n; i++){
            dp[i][0] = max(dp[i-1][0], -prices[i]);
            dp[i][1] = max(dp[i-1][1], dp[i-1][0]+prices[i]);
            for(int j = 1; j < k; j++){
                dp[i][2*j] = max(dp[i-1][2*j], dp[i-1][2*j-1]-prices[i]);
                dp[i][2*j+1] = max(dp[i-1][2*j+1], dp[i-1][2*j]+prices[i]);
            }
       }
       // 5.举例推导递推公式
       return dp[n-1][2*k-1];
    }
};
相关推荐
王老师青少年编程21 分钟前
csp信奥赛C++高频考点专项训练之贪心算法 --【排序贪心】:魔法
c++·算法·贪心·csp·信奥赛·排序贪心·魔法
wearegogog12322 分钟前
基于和差波束法的单脉冲测角MATLAB实现
人工智能·算法·matlab
AI科技星30 分钟前
灵魂商数(SQ) · 全域数学统一定义【乖乖数学】
算法·机器学习·数学建模·数据挖掘·量子计算
晓觉儿31 分钟前
【GPLT】2026年第十一届团队程序设计天梯赛赛后题解(已写2h,存档中)
数据结构·c++·算法·深度优先·图论
We་ct37 分钟前
LeetCode 322. 零钱兑换:动态规划入门实战
前端·算法·leetcode·typescript·动态规划
6Hzlia1 小时前
【Hot 100 刷题计划】 LeetCode 394. 字符串解码 | C++ 单栈回压法
c++·算法·leetcode
穿条秋裤到处跑1 小时前
每日一道leetcode(2026.04.22):距离字典两次编辑以内的单词
算法·leetcode
淘矿人1 小时前
Claude辅助算法设计与优化
人工智能·python·算法·microsoft·github·bug·pygame
流年如夢2 小时前
自定义类型进阶:联合与枚举
java·c语言·开发语言·数据结构·数据库·c++·算法
wayz112 小时前
Day 10:集成学习进阶(Boosting: AdaBoost, GBDT)
算法·机器学习·集成学习·boosting