的自下而上的方法(动态编程)在于第一看"较小"的子问题,进而解决使用所述溶液到较小的问题较大子问题.
在自上而下的在于解决"自然地"的问题,并检查是否已计算出前解决的子问题.
我有点困惑.这两者有什么区别?
我了解到动态规划(DP)有两种:自上而下和自下而上。
在自顶向下中,您使用递归和记忆。在自下而上中,您只需填充一个数组(一个表)。
此外,这两种方法都使用相同的时间复杂度。就我个人而言,我发现自上而下的方法更容易、更自然地遵循。给定的 DP 问题是否可以使用这两种方法中的任何一种来解决?或者我是否会遇到只能通过两种方法之一解决的问题?
recursion memoization dynamic-programming top-down bottom-up