债券在每一天的成本是prices
,长度为n
,我需要通过买入和卖出来获得最大利润k
交易(买入和卖出,不是在同一天,但我可以在同一天卖出然后再买入)。买入和卖出股票的最大利润是k次
我试过(蟒蛇):
prices = [3, 1, 10]
n = len(prices)
def aux(i, j):
if j == n - 1 or i == 0:
return 0
s = [(prices[j + t] - prices[j]) + aux(i - 1, j + t)
for t in range(1, n - j)]
return max(aux(i, j + 1), max(s)) if s else aux(i, j + 1)
def max_profit(k):
return aux(k, 0)
但在代码中给定的阵列,并与k=2
我得到9
当它应该是(1 - 3) + (10 - 1) = 7
。它似乎获得最多k笔交易的最大利润,而不是完全k。
如何解决?
您还可以提供一个输入和输出的例子,以便我可以处理它 – zenwraight
@zenwraight在代码示例中有'prices = [3,1,10]',我写了什么,当你打电话给它时与'k = 2' – po1son
当然,最大利润* *是通过在'1'买入和在'10'卖出并且应该是'9'来做出的?或者有什么你不告诉我们的? –