题目地址:点击打开链接
参考:点击打开链接
他的里面有个地方写错了
local[i][j]=max(global[i-1][j-1]+diff,local[i-1][j]+diff)
class Solution {
public:
int maxProfit(int k, vector<int>& prices) {
int n=prices.size();
if(n<=1)return 0;
if(k>n/2)return mp(prices);
vector<int> global(k+1,0);
vector<int> local(k+1,0);
for(int i=1;i<n;++i){
int diff=prices[i]-prices[i-1];
for(int j=k;j>0;--j){
local[j]=max(global[j-1]+diff,local[j]+diff);
global[j]=max(global[j],local[j]);
}
}
return global[k];
}
private:
int mp(vector<int>& prices){
int ans=0;
for(int i=1;i<prices.size();++i){
if(prices[i]>prices[i-1])ans+=prices[i]-prices[i-1];
}
return ans;
}
};