[CF552E] Vanya and Brackets - 思維
阿新 • • 發佈:2020-09-10
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)