程序以找到我们可以在python中买卖k之后可以赚到的最大利润

假设我们有一个称为nums的数字列表,它们按时间顺序表示公司的股票价格,并且还有另一个值k,我们必须找到最多可以通过k次买卖获得的最大利润(我们必须购买出售之前,以及购买之前出售)。

因此,如果输入就像价格= [7、3、5、2、3] k = 2,那么输出将是3,因为我们可以在3处购买,然后在5处出售,再次在2处购买,然后出售在3。

为了解决这个问题,我们将遵循以下步骤-

  • 定义一个功能dp()。这将花费i,k

  • 如果我等于价格的大小或k等于0,则

    • 返回0

  • 如果买的是真的,那么

    • 返回(dp(i + 1,k-1,False)+ price [i])和dp(i + 1,k,购买)的最大值

  • 除此以外,

    • 返回(dp(i + 1,k,True)-price [i])和dp(i + 1,k,购买)的最大值

  • 从主方法调用dp(0,k,False)并返回结果

让我们看下面的实现以更好地理解-

例 

class Solution:

   def solve(self, prices, k):

      def dp(i, k, bought):

         if i == len(prices) or k == 0:

            return 0

         if bought:

            return max(dp(i + 1, k - 1, False) + prices[i], dp(i + 1, k, bought))

         else:

            return max(dp(i + 1, k, True) - prices[i], dp(i + 1, k, bought))

      return dp(0, k, False)

ob = Solution()prices = [7, 3, 5, 2, 3]

k = 2

print(ob.solve(prices, k))

输入值

[7, 3, 5, 2, 3], 2

输出结果

3

以上是 程序以找到我们可以在python中买卖k之后可以赚到的最大利润 的全部内容, 来源链接: utcz.com/z/330817.html

回到顶部