Description

给定一个只有 +* 和一位整数构成的表达式,你可以添加一对括号,使得这个表达式的值最大。* 的个数不超过 \(15\)

Solution

显然 ( 一定出现在式子最左边或者某个 * 的右边

显然 ) 一定出现在式子最右边或者某个 * 的左边

于是我们可以暴力枚举要将哪一段套括号,然后生成一个新的表达式,暴力计算即可

手写表达式计算器太烦了,于是直接 Python

src_str=input()
lenstr=len(src_str)
str=list(src_str)

listMulPos=[]
for i,c in enumerate(str):
    if c=='*':
        listMulPos.append(i)
listLeftParPos=[0]
for i in listMulPos:
    listLeftParPos.append(i+1)
listRightParPos=[lenstr]
for i in listMulPos:
    listRightParPos.append(i)

ans=0

# 枚举所有可行的表达式并计算
for leftPos in listLeftParPos:
    for rightPos in listRightParPos:
        tmp=[]
        for i in str:
            tmp.append(i)
        if(leftPos<rightPos+1):
            tmp.insert(leftPos,'(')
            tmp.insert(rightPos+1,')')
            tmpval=eval(''.join(tmp))
            ans=max(ans,tmpval)

print(ans)

相关文章:

  • 2022-02-21
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-05
  • 2021-07-10
猜你喜欢
  • 2021-05-31
  • 2022-12-23
  • 2021-11-29
  • 2021-06-08
  • 2022-01-20
  • 2021-05-11
  • 2022-02-17
相关资源
相似解决方案