【发布时间】:2017-06-19 15:24:50
【问题描述】:
每天债券的成本在数组prices 长度为n 中给出,我需要找到通过精确 @ 买卖可以获得的最大利润987654323@ 交易(按此顺序进行买卖。不是在同一天。但我可以在同一天卖出然后再买入)。
我试过(Python):
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 在代码示例中有
prices = [3, 1, 10],我写了当你用k=2调用它时应该是什么 -
在
1买入并在10卖出肯定能获得最大利润,应该是9吗?还是有什么你没有告诉我们的?
标签: python algorithm dynamic-programming