188. 买卖股票的最佳时机 IV
题目链接:188. 买卖股票的最佳时机 IV
代码如下:
//动态规划
//参考:https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-iv/
class Solution {
public:int maxProfit(int k, vector<int>& prices) {//定义 f[i][j][k]f[i][j][k]f[i][j][k] 表示到第i天时,最多交易j次(这里我们规定交易次数等于买入次数),且当前持有股票的状态为 kkk 时,所能获得的最大利润//k=1代表买入,=0代表卖出int dp[prices.size()][k+1][2];memset(dp,0,sizeof(dp));//初始化for(int i=1;i<=k;i++) dp[0][i][1]=-prices[0];for(int i=1;i<prices.size();i++){for(int j=1;j<=k;j++){dp[i][j][0]=max(dp[i-1][j][1]+prices[i],dp[i-1][j][0]);//卖出dp[i][j][1]=max(dp[i-1][j-1][0]-prices[i],dp[i-1][j][1]);//买入}}return dp[prices.size()-1][k][0];}
};