点击打开链接
class Solution {
public:
int solveMaxProfit(vector<int>& prices)
{
int res = 0;
for(int i=1; i<prices.size(); i++){
if(prices[i] > prices[i-1]){
res += prices[i]-prices[i-1];
}
}
return res;
}
int maxProfit(int k, vector<int>& prices) {
if(prices.empty()) return 0;
if(k >= prices.size()) return solveMaxProfit(prices);
vector<int> G(k+1, 0), L(k+1, 0);
for(int i=1; i< prices.size(); i++){
int diff = prices[i] - prices[i-1];
for(int j=k; j>=1; j--){
L[j] = max(G[j-1]+max(diff, 0), L[j]+diff);
G[j] = max(G[j], L[j]);
}
}
return G[k];
}
};