使用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
- 如果标志为false,则
- 返回recur(i + 1, 1) – prices[i]和recur(i + 1,0)中的最大值
- 返回recur(i + 1,1)和recur(i + 1,0) + prices[i] – fee中的最大值
-
从主方法调用recur()
让我们看一下以下实现以获得更好的理解:
更多Python相关文章,请阅读:Python 教程
示例
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