在Python中插入运算符以查找最大值的程序

在Python中插入运算符以查找最大值的程序

假设我们有一个名为nums的数字列表,我们必须找到通过在给定数字之间添加任何二进制运算符(+, -, *)以及插入任何有效括号可以生成的最大值。

因此,如果输入为nums = [−6, −4, −10],则输出将为100,因为我们可以创建像以下这样的表达式:((-6) + (-4)) * -10。

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

  • OPS:运算符列表[+, -,*]

  • N:A的大小

  • 如果A中的所有元素均为0,则

    • 返回0
  • 定义一个函数dp()。这将采取i,j

  • 如果i与j相同,则

    • 返回一对(A [i],A [i])
  • low:inf,high:−inf

  • 对于k在范围i到j – 1中,执行以下操作

    • 对于dp(i,k)中的每个left,请执行以下操作
      • 对于dp(k + 1,j)中的每个right,请执行以下操作

      • 对于OPS中的每个运算符op,都执行以下操作

        • res:left op right

        • 如果res < low,则

        • low:= res

        • 如果res > high,则

        • high:= res

  • 返回一对(low,high)

  • 从主方法执行以下操作 –

  • ans:= dp(0,N – 1)

  • 返回ans的第二个值

让我们看下面的实现,以便更好地理解 –

更多Python相关文章,请阅读:Python 教程

示例

import operator
class Solution:
   def solve(self, A):
      OPS = [operator.add, operator.sub, operator.mul]
      N = len(A)
      if not any(A):
         return 0
      def dp(i, j):
         if i == j:
            return [A[i], A[i]]
         low = float("inf")
         high = float("−inf")
         for k in range(i, j):
            for left in dp(i, k):
               for right in dp(k + 1, j):
                  for op in OPS:
                     res = op(left, right)
                     if res < low:
                        low = res
                     if res > high:
                        high = res
         return [low, high]
      return dp(0, N - 1)[1]
ob = Solution()
nums = [−6, −4, −10]
print(ob.solve(nums))

输入

[−6, −4, −10]

输出

100

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程