123.买卖股票的最佳时机III

自己写的时候漏掉了dp[0][3]=-prices[0];这个条件

class Solution {
public:
    int maxProfit(vector<int>& prices) {
//         一天一共就有五个状态,

// 没有操作 (其实我们也可以不设置这个状态)
// 第一次持有股票
// 第一次不持有股票
// 第二次持有股票
// 第二次不持有股票
// dp[i][j]中 i表示第i天,j为 [0 - 4] 五个状态,dp[i][j]表示第i天状态j所剩最大现金。
vector<vector<int>>dp(prices.size(), vector<int>(5,0));
dp[0][1]=dp[0][3]=-prices[0];

for(int i=1;i<prices.size();i++){
dp[i][1] = max(dp[i - 1][0] - prices[i], dp[i - 1][1]);
dp[i][2] = max(dp[i - 1][1] + prices[i], dp[i - 1][2]);
dp[i][3] = max(dp[i - 1][2] - prices[i], dp[i - 1][3]);
dp[i][4] = max(dp[i - 1][3] + prices[i], dp[i - 1][4]);
}
return max(dp[prices.size()-1][2],dp[prices.size()-1][4]);
    }
};