力扣 309. 买卖股票的最佳时机含冷冻期

题目来源:https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-cooldown/description/

C++题解:动态规划

状态1:表示持有股票。更新为之前持有股票(dpi-10)或者不持有股票且不处于冷冻期后买入(dpi-12-pricesi)。

状态2:表示不持有股票且处于冷冻期,即卖出。更新为持有股票后卖出(dpi-10+pricesi)。

状态3:表示不持有股票且不处于冷冻期,即保持之前已经持有股票的状态。更新为不持有股票的两个状态较大值(dpi-11 或 dpi-12)。

返回值为状态2或状态3中的较大值。

cpp 复制代码
class Solution {
public:
    int maxProfit(vector<int>& prices) {
        int n = prices.size();
        if(n <= 1) return 0;
        // dp[i][0]表示持有股票,dp[i][1]表示不持有股票且处于冷冻期-即卖出,dp[i][2]表示不持有股票且不处于冷冻期,即保持之前已经持有股票的状态
        vector<vector<int>> dp(n, vector<int>(3, 0));
        dp[0][0] = -prices[0];
        for(int i = 1; i < n; i++){
            dp[i][0] = max(dp[i-1][0], dp[i-1][2]-prices[i]); cout<<dp[i][0]<<" ";
            dp[i][1] = dp[i-1][0] + prices[i]; cout<<dp[i][1]<<" ";
            dp[i][2] = max(dp[i-1][1], dp[i-1][2]); cout<<dp[i][2]<<" "<<i<<endl;
        }
        return max(dp[n-1][1], dp[n-1][2]);
    }
};
相关推荐
北域码匠21 小时前
高通滤波算法深度解析(High-Pass Filter)
stm32·算法·c#·数字信号处理·嵌入式开发·滤波算法·高通滤波
指掀涛澜天下惊1 天前
强化学习进阶篇八 策略梯度算法
深度学习·学习·算法·强化学习
乌萨奇也要立志学C++1 天前
【洛谷】kmp算法
开发语言·算法
禹凕1 天前
Dijkstra算法详解与应用
python·算法
千谦阙听1 天前
C++类和对象(中):默认成员函数、构造与析构、拷贝构造、运算符重载
开发语言·c++·学习
YaraMemo1 天前
元启发式算法框架
人工智能·算法·5g·信息与通信·启发式算法·信号处理
weixin_307779131 天前
一维无粘 Burgers 方程的激波形成问题:MacCormack 格式求解
c++·算法·matlab
HugoStudio_SWAN1 天前
洛谷 B4500 / B4449 / B3843 凯撒密码、密码强度与密码合规——加密与安全的三道门
c++·学习·程序人生·算法·安全
雾里看山1 天前
源码目录、构建目录与 out-of-source build
c++·软件构建·cmake
枫叶林FYL1 天前
【群体智能集群控制工程实践】第3章 一致性协同算法
算法