动态规划一般提问的形式是:最优解是多少,是否可以,有多少种具体的方案。不涉及具体解。
所以如果一个题目问:请你列出解决这个问题的所有解,很多时候是用回溯算法,回溯算法是一种基于深度优先遍历的方法,思想依然是遍历得到所有的解。回溯算法的复杂度很高。
动态规划和回溯算法的相同点是:解决一个问题有多个步骤,每一个步骤有多种选择。
问最优解是多少,用动态规划,也可以用回溯算法,但是复杂度很高,很多时候会超时。问全部具体解,用回溯算法。
用动态规划解决的问题一般需要满足最优子结构、重复子问题、无后效性。最优子结构和无后效性在当前这个问题中没有体现。