Algorithm 最大化算术表达式

Algorithm 最大化算术表达式,algorithm,expression,dynamic-programming,Algorithm,Expression,Dynamic Programming,我想最大化表达式5-8+7*4-8+9 这样拆分后,答案是200 (5)− ((8 + 7) × (4 − (8+9)) 它可以通过使用矩阵链乘法算法来解决。 若表达式只有“+”和“*”运算符,则给出正确答案 Let's take expression 5+2*4 1 2 3 1 5 7 28 2 - 2 8 3 - - 4 它是一个3X3矩阵,其中(1,1)是5,(2,2)是2,(3,3)是4 如果我想知道M[1][2]或M[1][3],那么 M[1][2]=M

我想最大化表达式
5-8+7*4-8+9
这样拆分后,答案是
200
(5)− ((8 + 7) × (4 − (8+9))

它可以通过使用
矩阵链乘法
算法来解决。
若表达式只有“+”和“*”运算符,则给出正确答案

 Let's take expression 5+2*4
     1 2 3
   1 5 7 28
   2 - 2 8
   3 - - 4
它是一个3X3矩阵,其中(1,1)是5,(2,2)是2,(3,3)是4 如果我想知道M[1][2]或M[1][3],那么

M[1][2]=M[1][1]o M[2][2]

M[1][3]=最大值(M[1][1]oom[2][3],M[1][2]oom[3][3])


有人能帮我找到对“-”运算符的正确方法吗。

不确定是否可以用你的算法解决,但下面是我解决它的方法

假设您必须简化一些表达式:
a#b#c#d#e
,其中#是一些操作(#可以不同)。我会用递归(和记忆)来处理它。在递归的第一步中,我将尝试在每个可能的位置插入括号,并在此表达式之后计算表达式:

  • (a#b#c#d#e
    =
    X#c#d#e
  • a#(b#c)#d#e
    =
    a#Y#d#e
  • a#b#(c#d#e
    =
    a#b#Z#e
  • a#b#c#(d#e)
    =
    a#b#c#V
所以你基本上只是把5个操作符表达式减少到了4个操作符表达式。如果两个表达式相同,则备忘录将很有帮助。当只有一个数字时,完成递归(在本例中,将其与最大值和更新最大值进行比较)

请注意,对于5运算符表达式,甚至不需要记忆