Python程式:如何在買賣股票時計算最大利潤(含交易費用)?
假設我們有一個按時間順序排列的公司股票價格列表,以及每次出售交易的交易費用。我們需要找到透過多次買賣該股票所能獲得的最大利潤。在出售之前必須先買入。
因此,如果輸入類似於 prices = [2, 10, 4, 8] fee = 3,則輸出將為 6,因為我們可以在價格 2 買入並在價格 10 出售,併產生 3 的費用,因此利潤為 5。然後我們以價格 4 買入並在價格 8 出售,併產生 3 的費用,因此利潤為 1,總利潤為 6。
為了解決這個問題,我們將遵循以下步驟
n := prices 的大小
定義一個函式 recur()。它將採用 i:= 0 和 flag := 0
如果 i 等於 n,則
返回 0
如果 flag 為假,則
返回 recur(i + 1, 1) - prices[i] 和 recur(i + 1, 0) 的最大值
返回 recur(i + 1, 1) 和 recur(i + 1, 0) + prices[i] - fee 的最大值
從主方法呼叫 recur()
讓我們看看以下實現以更好地理解
示例
class Solution: def solve(self, prices, fee): n = len(prices) def recur(i=0, flag=0): if i == n: return 0 if not flag: return max(recur(i + 1, 1) - prices[i], recur(i + 1, 0)) return max(recur(i + 1, 1), recur(i + 1, 0) + prices[i] - fee) return recur() ob = Solution() prices = [2, 10, 4, 8] fee = 3 print(ob.solve(prices, fee))
輸入
[2, 10, 4, 8], 3
輸出
6
廣告