具体思想:
123题目的扩充
具体代码:
class Solution {
public:
int maxProfit(int k, vector<int>& prices) {
if(k==0||prices.size()==0)
return 0;
int inf=-100000;
int n=prices.size();
vector<vector<vector<int>>>dp(n,vector<vector<int>>(2,vector<int>(k+1,0)));
for(int i=1;i<=k;i++){
dp[0][0][i]=dp[0][1][i]=inf;
}
dp[0][1][0]=-prices[0];
for(int i=1;i<n;i++){
dp[i][0][0]=0;
dp[i][1][0]=max(dp[i-1][1][0],dp[i-1][0][0]-prices[i]);
for(int j=1;j<=k;j++){
dp[i][0][j]=max(dp[i-1][0][j],dp[i-1][1][j-1]+prices[i]);
dp[i][1][j]=max(dp[i-1][1][j],dp[i-1][0][j]-prices[i]);
}
dp[i][1][k]=inf;
}
int ret=0;
for(int i=0;i<=k;i++){
ret=max(ret,dp[n-1][0][i]);
}
return ret;
}
};