[CF552E] Vanya and Brackets

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)

原文地址:https://www.cnblogs.com/mollnn/p/13644040.html