Leetcode 309 最佳买卖股票时机含冷冻期 (动态规划)

Posted suuusu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode 309 最佳买卖股票时机含冷冻期 (动态规划)相关的知识,希望对你有一定的参考价值。

又是一道找到了状态转移方程,就可以迎刃而解的问题

但是状态转移方程不好找啊

分析题目:

每一天的四种状态:买进、卖出、冷冻期、什么都不做

每天的状态排列遵循:买...卖冷...买...卖冷...  其中...代表什么都不做的日子,可能有多个

因为有的日子什么都不做,没办法指明某一天到底进行了哪种操作,所以将状态定为“这一天及之前进行的最后操作”

第i天及以前,进行的最后操作为买进,所获得的最大收益:sell[i] 

类似地定义buy[i] ,cool[i]

状态转移方程:

sell[i]=buy[i-1]+price[i]
buy[i]=max(cool[i-1]-prices[i],buy[i])
cool[i]=max(sell[i-1],cool[i-1])

代码:

class Solution 
public:
    int maxProfit(vector<int>& prices) 
        int len = prices.size();
        if (len == 0)return 0;
        vector<int> sell(len), buy(len), cool(len);
        sell[0] = 0;
        buy[0] = -1*prices[0];
        cool[0] = 0;
        for (int i = 1;i < len;i++) 
            sell[i] = buy[i - 1] + prices[i];
            buy[i] = max(cool[i - 1] - prices[i], buy[i - 1]);
            cool[i] = max(sell[i - 1], cool[i - 1]);
        
        int ans = max(sell[len-1], buy[len-1]);
        ans=max(ans,cool[len - 1]);
        return ans;
    
;

 

以上是关于Leetcode 309 最佳买卖股票时机含冷冻期 (动态规划)的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode 309 最佳买卖股票时机含冷冻期 (动态规划)

LeetCode 0309. 最佳买卖股票时机含冷冻期

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

309. 最佳买卖股票时机含冷冻期(二维dp)

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

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