力扣 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]);
    }
};
相关推荐
飞Link17 分钟前
什么是 PX4?一文了解 PX4 在空地协同中的作用
算法·无人机
进化中的刀盾兽39 分钟前
从零实现 C++ Json-Rpc(十):把消息交给真实连接——MuduoConnection 与 ConnectionFactory
c++·rpc
一去不复返的通信er7 小时前
力扣-图论-岛屿数量
算法·leetcode·图论
青瓦梦滋7 小时前
WebSocket协议
linux·服务器·网络·c++·websocket·网络协议·http
程序 代码狂人10 小时前
切片表与分区表的区别(数据开发面试版)
java·大数据·开发语言·数据仓库·算法
HDU-Dade10 小时前
【校招笔试真题】简要介绍 Self-Attention 的前沿算法
人工智能·算法
Xin77011 小时前
LeetCode 79. 单词搜索(DFS 回溯法)
leetcode
小郎君65812 小时前
Vue keep-alive 切标签后滚动位置回顶?因为 onDeactivated 里读到的 scrollTop 是 0
算法
CodeYp201913 小时前
第15讲:二叉搜索树
开发语言·c++·二叉搜索树
邵奈一13 小时前
GPT-6.1 Terra速度是Sol的3倍,价格减半
算法