题目
可以进行两次交易,先买在卖,下一次买时,上一次必须卖出
求最大收益
也可以是k次
思路
creat两个二维数组,global表示第i天的第j次收益的最大值,lacal表示第i天的第j次的最大收益,且第j次交易必须发生在第i天。
代码
def stock(s,k):
length = len(s)
dp_global = [[0 for _ in range(k)]for _ in range(length)]
dp_local = [[0 for _ in range(k)] for _ in range(length)]
for j in range(k):
for i in range(1,length):
diff = s[i] - s[i - 1]
dp_local[i][j] = max(dp_global[i][j - 1], dp_local[i - 1][j] + diff)
dp_global[i][j] = max(dp_global[i-1][j],dp_local[i][j])
return dp_global[-1][-1]