51nod 1452:加括号 python eval

45 篇文章 0 订阅

题目来源:  CodeForces
基准时间限制:1 秒 空间限制:524288 KB 分值: 80  难度:5级算法题
 收藏
 关注

有一个算术表达式  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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值