51nod 1452:加括号 python eval
2015-12-16 15:37
609 查看
1452 加括号
![](http://file.51nod.com/images/icon/ok.png)
题目来源: CodeForces
基准时间限制:1 秒 空间限制:524288 KB 分值: 80 难度:5级算法题
![](http://www.51nod.com/images/icon/star.png)
收藏
![](http://www.51nod.com/images/icon/plus.png)
关注
有一个算术表达式 x1 Δ x2 Δ x3 Δ ,..., Δ xn, x1,x2,x3,...,xn 是1到 9的数字, Δ是'+'或者'*'。
现在要求你在这个表达式中加一对括号,使得这个式子的值最大。
样例解释:3 + 5 * (7 + 8) * 4 = 303。
Input
Output
Input示例
Output示例
一开始想用C++暴力,结果发现添括号的位置是在任意两端,然后添括号的位置只可能在*两边,而*号有最多只有15个,从这个角度暴力。
最后,想起来python有一个eval函数,用python直接搞。
代码:
![](http://file.51nod.com/images/icon/ok.png)
题目来源: CodeForces
基准时间限制:1 秒 空间限制:524288 KB 分值: 80 难度:5级算法题
![](http://www.51nod.com/images/icon/star.png)
收藏
![](http://www.51nod.com/images/icon/plus.png)
关注
有一个算术表达式 x1 Δ x2 Δ x3 Δ ,..., Δ xn, x1,x2,x3,...,xn 是1到 9的数字, Δ是'+'或者'*'。
现在要求你在这个表达式中加一对括号,使得这个式子的值最大。
样例解释:3 + 5 * (7 + 8) * 4 = 303。
Input
单组测试数据。 第一给出表达式s(1 ≤ |s| ≤ 5001, |s| 是奇数),它的奇数位是1到9的数字字符,偶数位是'+'或'*'。 '*'的数目不超过15。
Output
输出最大的值。
Input示例
3+5*7+8*4
Output示例
303
一开始想用C++暴力,结果发现添括号的位置是在任意两端,然后添括号的位置只可能在*两边,而*号有最多只有15个,从这个角度暴力。
最后,想起来python有一个eval函数,用python直接搞。
代码:
s=str(raw_input()) arr=[0,len(s)+1] for i in range(0,len(s)): if(s[i]=='*'): arr.append(i) arr.sort(); minx=0 for k1 in range(0,len(arr)): if(arr[k1]==0): test='(' else: test=s[0:arr[k1]+1]+'(' for k2 in range(k1+1,len(arr)): tt=test if(arr[k1]==0): tt=tt+s[arr[k1]:arr[k2]]+')'+s[arr[k2]:len(s)] else: tt=tt+s[arr[k1]+1:arr[k2]]+')'+s[arr[k2]:len(s)] exec("a="+tt) if(a>minx): minx=a; #print k1,k2 #print tt print minx
相关文章推荐
- 备忘录:python 3在class中使用yield
- SubLime Text3 Python不能输出中文的解决办法
- 零基础入门学习Python(12):lambda表达式、filter()和map()
- Python基础教程 第4章: 字典 学习笔记
- python操作MySQL数据库
- Python 学习
- python and ice
- python批量GBK转UTF-8
- 【Python 1】函数模块
- python循环技巧
- Python文件I/O
- [No000066]python各种类型转换-int,str,char,float,ord,hex,oct等
- [No000065]python 获取当前时间
- python监控服务器信息
- SubLime Text3 打造Python的IDE
- Python小技巧:使用*解包和itertools.product()求笛卡尔积
- python-列表式实战
- Python学习笔记(2)装饰器
- python 文件读取
- python中 encode,decode,unicode,utf-8