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

我自己定义的状态

class Solution {
public:
    int maxProfit(vector<int>& v) {
        // dp[i][j] 表示第i天的最大现金
        // 0 持有
        // 1 非持有且不在冷冻期
        // 2 非持有且冷冻期(刚出售)
        vector<vector<int>>dp(v.size(),vector<int>(3,0));
        dp[0][0]=-v[0];
        for(int i=1;i<v.size();i++){
            dp[i][0]=max(dp[i-1][0],dp[i-1][1]-v[i]);// 原本就持有 / 解冻后买入
            dp[i][1]=max(dp[i-1][1],dp[i-1][2]);// 原本就不在冷冻期 / 新的解锁
            dp[i][2]=dp[i-1][0]+v[i];
        }
        return max(dp[v.size()-1][1],dp[v.size()-1][2]);
    }
};