通过在Python中的数字之间插入运算符来查找最大值的程序
假设我们有一个称为nums的数字列表,我们必须找到可以通过在给定数字之间添加+,-和*之类的任何二进制运算符并插入任何有效的括号来生成的最大值。
因此,如果输入类似于nums = [−6,-4,-10],则输出将为100,因为我们可以使表达式像:((−6)+(−4))* -10。
为了解决这个问题,我们将遵循以下步骤-
OPS:=运算符列表[+,−,*]
N:= A的大小
如果A中的所有元素均为0,则
返回0
定义一个功能dp()。这需要我,j
如果我和j相同
返回一对(A [i],A [i])
低:= inf,高:= -inf
对于在i到j − 1范围内的k
对于dp(k + 1,j)中的每个右,
res:=左op右
如果res <低,则
如果res> high,则
低:= res
高:= res
对于OPS中的每个运算符op,
对于剩下的每个dp(i, k),
返回对(低,高)
从主要方法中执行以下操作-
ans:= dp(0,N − 1)
返回ans的第二个值
让我们看下面的实现以更好地理解-
示例
import operatorclass 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中的数字之间插入运算符来查找最大值的程序 的全部内容, 来源链接: utcz.com/z/356123.html