241. 为运算表达式设计优先级
这道题目要多写,了解思想
总结:
对于这个题目的动态规划,我没有什么好说的,真的很难,我觉得
动态规划我已经做了很多了,在具有大量重复计算时,通过每一步走
最优解(或者记录所有可能情况),已经后面不会影响到前面时所使用
的,集中体现在写出了状态转移方程
而这个题目的你乍一看,感觉挺有思路的
假设有一个2*3-4*5
不就是2 然后2*3 然后2*3-3的所有可能情况蛮,二维数组不就好了?
仔细一想,哎呦不对dp[i][j]怎么表示啊,i到j的所有运算可能情况?
那这样的话,运算符怎么办?
所以就有了一种很巧妙的方式,将数字和运算符单独的拿出来
组成numlist和oplist(这里需要注意一下有的数字长度可能为2,3..
不能直接放入numlist中)
dp的初始状态就是长度为一时的,dp[i][i]
这样算长度为2,3,4....(2两数字