【发布时间】:2015-04-02 22:03:09
【问题描述】:
表达式由数字 (0-9) 组成,由两个运算符“*”和“+”之一分隔。字符之间没有空格。
例如:1+2*3+4*5
我们需要找出在适当位置使用括号可以得到的最大值和最小值。
最大值:105 = (1+2)*(3+4)*5
最小值:27 = 1+2*3+4*5
我正在寻找一种递归方式来做到这一点?任何想法将不胜感激。
【问题讨论】:
-
我们应该使用的括号数量是固定的吗?
-
1+(2*3)+4*5 和其他变种也是最低要求
-
@MrGreen:不,它不是固定的。您可以根据需要添加任意数量。问题是你能达到的最大值是多少。
-
@KarolyHorvath:在所有情况下最小值都是 27 并不重要。
标签: algorithm recursion dynamic-programming