leetcode-309-最佳买卖股票时机含冷冻期
class Solution {
public:
int maxProfit(vector<int>& prices) {
if (prices.size() < 2) return 0;
vector<vector<int>> dp_hasnt(prices.size(), vector<int>(2)) ;
vector<int> dp_has(prices.size());
dp_hasnt[0][0] = 0;
dp_hasnt[0][1] = INT_MIN; //不可能的情况
dp_has[0] = -prices[0];
for (int i=1; i<prices.size(); i++){
dp_hasnt[i][0] = max(dp_hasnt[i-1][0], dp_hasnt[i-1][1]);//持续没有,冷静期取消
dp_hasnt[i][1] = dp_has[i-1]+prices[i]; //买入,成为冷静期
dp_has[i] = max(dp_has[i-1], dp_hasnt[i-1][0] - prices[i]);
}
return max(dp_hasnt.back()[0], dp_hasnt.back()[1]);
}
};