1. 程式人生 > 實用技巧 >[CF552E] Vanya and Brackets - 思維

[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)