深度优先搜索和动态规划都可以解决最优解问题,即从很多解决问题的方案中找到最优的一个。
很多情况下,最优解问题最直接的思维就是递归(深度优先搜索)。递归求解子问题时,没有出现重复子问题,则没有必要用动态规划,直接普通的递归就可以了;如果出现重复子问题就可以考虑记忆化搜索和动态规划,并且任何记忆化搜索都能改成动态规划。
个人认为记忆话搜索思维更直接更简单,所以如果遇到一道从来没接触过的题目时,可以想想记忆化搜索该如何实现,然后反推出动态规划。当然,如果觉得记忆化搜索更好实现的话,大可直接使用记忆化搜索求解,不一定需要将其转化为动态规划。因为由记忆化搜索直接转过来的动态规划,两者复杂度是一样的,而且通常记忆化搜索的实现难度通常要低很多。