一、题目
二、代码
class Solution
{
public int maxProfit(int k, int[] prices)
{
int i,j;
int length;
//类比先前
//其实就是之前的翻版
length = prices.length;
int[][] dp = new int[length][1+2*k];
//第一个表次数 第二个表状态
// 0 未持有 1第一次持有 2第二次卖出
for(i = 1; i<=2*k;i=i+2)
{
dp[0][i] = -1 * prices[0];
// System.out.println(" ")
}
for(i=1;i<length;i++)
{
dp[i][0] = dp[i-1][0];
for(j=1;j<=2*k;j++)
{
if(j%2==1)
{
dp[i][j] = Math.max(dp[i-1][j] ,dp[i-1][j-1]-prices[i]);
}
if(j%2==0)
{
dp[i][j] = Math.max(dp[i-1][j],dp[i-1][j-1]+prices[i]);
}
}
}
return dp[length-1][2*k];
}
}