2
public int maxProfit(int k, int[] prices) {5
int[][][] dp = new int[N][2][k + 1];6
for (int i = 0; i < N; i++) {7
for (int j = 0; j < 2; j++) {8
for (int tran = 0; tran <= k; tran++) {13
return profit(0, 1, k, prices, dp);16
int profit(int index, int buy, int transaction, int[] prices, int[][][] dp) {17
if (transaction == 0) {20
if (index == prices.length) {23
if (dp[index][buy][transaction] != -1) {24
return dp[index][buy][transaction];30
-prices[index] + profit(index + 1, 0, transaction, prices, dp),31
0 + profit(index + 1, 1, transaction, prices, dp));35
prices[index] + profit(index + 1, 1, transaction - 1, prices, dp),36
0 + profit(index + 1, 0, transaction, prices, dp));38
dp[index][buy][transaction] = profit;39
return dp[index][buy][transaction];