是否计划通过使用Python付费购买和出售股票来找到最大的利润?
假设我们有一个按时间顺序排列的公司股价列表,并且也有一个卖出交易的交易费用。我们必须找到通过多次买卖该股票所能获得的最大利润。我们必须先购买,然后才能出售。
因此,如果输入像价格=[2、10、4、8]费用=3,那么输出将是6,因为我们可以在2买入并在10卖出并产生3的费用,所以利润是5。然后我们在4买入,在8卖出,产生3的费用,因此获利1,总获利6。
为了解决这个问题,我们将遵循以下步骤:
n:=价格大小
定义一个功能recur()
。这将需要i:=0和flag:=0
如果我和n相同
返回0
如果标志为假,则
返回recur(i+1,1)-price[i]和recur(i+1,0)的最大值
返回recur(i+1,1)和recur(i+1,0)+价格的最大值[i]-费用
从主方法调用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