欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

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

最编程 2024-03-05 19:57:06
...
public class Solution {
    public int MaxProfit(int k, int[] prices) {
        if(prices.Length==0)
        {
            return 0;
        }
        int[,]dp=new int[prices.Length,k*2+1];
        for(int i=1;i<k*2;i+=2)
        {
            dp[0,i]=-prices[0];
        }
        for(int i=1;i<prices.Length;i++)
        {
            for(int j=0;j<k*2-1;j+=2)
            {
                dp[i,j+1]=Math.Max(dp[i-1,j+1],dp[i-1,j]-prices[i]);
                dp[i,j+2]=Math.Max(dp[i-1,j+2],dp[i-1,j+1]+prices[i]);
            }
        }
           return dp[prices.Length-1,k*2];
    }
}

遇上一题相比就是可以操作K次,所以二维数组的后一项就变为2K,然后利用for循环进行初始化和状态转移方程,和上一题同理。