目录
一、题目
309. 买卖股票的最佳时机含冷冻期 - 力扣(LeetCode)
二、代码
class Solution {
public:
int maxProfit(vector<int>& prices) {
int n = prices.size();
//0表示持有股票的状态,1表示不持有股票在冷冻期,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]);
dp[i][1] = dp[i-1][0]+prices[i];//前一天有股票今天卖出股票
dp[i][2] = max(dp[i-1][2],dp[i-1][1]);
//要么延续前一天的状态,要么前一天在冷冻期,今天不在冷冻期
}
return max(max(dp[n-1][0],dp[n-1][1]),dp[n-1][2]);
}
};