用 Python 编写程序,找出通过收取费用买卖股票可以获得的最大利润?
pythonserver side programmingprogramming更新于 2026/2/16 5:00:17
假设我们有一份按时间顺序排列的某公司股票价格清单,并且还有一笔卖出交易的交易费。我们必须找出通过多次买卖该股票可以获得的最大利润。我们必须先买,然后才能卖。
因此,如果输入为 prices = [2, 10, 4, 8] fee = 3,则输出将为 6,因为我们可以以 2 买入并以 10 卖出,并产生 3 的费用,因此利润为 5。然后我们以 4 买入并以 8 卖出,并产生 3 的费用,因此利润为 1,总利润为 6。
为了解决这个问题,我们将遵循以下步骤:
n := size of prices
定义一个函数 recur() 。这将采用 i:= 0 和 flag := 0
如果 i 与 n 相同,则
返回 0
如果 flag 为 false,则
返回 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
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

