188.买卖股票的最佳时机IV

不过度确实好难啊,不过是自己写的,就类比一下上一道题

class Solution {
public:
    int maxProfit(int k, vector<int>& prices) {
        vector<vector<int>>dp(prices.size(), vector<int>(2*k+1,0));
        for(int j=0;j<k;j++)dp[0][2*j+1]=-prices[0];
        for(int i=1;i<prices.size();i++){
            for(int j=1;j<=k;j++){
                dp[i][2*j-1] = max(dp[i - 1][2*j-2] - prices[i], dp[i - 1][2*j-1]);
                dp[i][2*j]   = max(dp[i - 1][2*j-1] + prices[i], dp[i - 1][2*j]);   // 表示不持有
            }
        }
        int res = -1;
        for(int j=1;j<=k;j++)res=max(res,dp[prices.size()-1][2*j]);
        return res;
    }
};