是否计划通过使用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
猜你喜欢