问题是我必须找到最大化n个整数表达式的算法(它们可以是负数),只需在某些地方放置括号即可。我不能改变数字的顺序。
示例:
输入:4 6 8 2 5
输出应为:4 /(6/8/2/5)
目标是放置括号以最大化给定表达式的结果。在某些情况下,根本不需要放括号。
示例:
输入:8 -6 3 -2 -4 5 输出:8 / -6 / 3 / -2 / -4 / 5输出应该是最大值!
我有想法使用递归找到所有可能性,但我的解决方案没有被教授批准(他说有一个更容易和更快的解决方案!)现在当我的截止日期已过,我正在寻找直接的帮助!
答案 0 :(得分:1)
也许这不是编程测试而是数学测试。
假设你的输入是:a b c d e f ... z
考虑一下,如果你没有放任何括号,结果可以写成
a ^ + 1 * b ^ -1 * c ^ -1 * d ^ -1 ... z ^ -1
当你输入任何括号对时:
因此,最终影响结果的所有可能性由以下表达:
所以解决方案如下:
也许现在我在这个数学工作之后编码工作可以开始,结果时间复杂度将是O(n):只计算负输入的数量,你得到答案!。