債券在每一天的成本是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'來做出的?或者有什麼你不告訴我們的? –