V = [10,8,12]
W = [2,3,7]
i = 1,2,3
C = 10
我尝试使用带记忆化的递归来解决这个示例,但没有发现重叠子问题。
递归过程的签名:
knapsack(int c, int i)
最初被称为knapsack(10,1)
解决方案的方法就像在https://www.youtube.com/watch?v=6h6Fi6AQiRM和https://www.youtube.com/watch?v=ocZMDMZwhCY中所解释的那样。
动态规划如何帮助减少此类背包问题的时间复杂度?如果它不能帮助改善此案例的时间复杂度,那么DP解决方案的最坏情况复杂度是否与基于回溯搜索的复杂度相同,即2的n次方[忽略修剪,因为如果应用修剪,则复杂度将减少,并且再次DP不会比非记忆递归解决方案更好]
** 在上面的示例中,子问题之间是否真的缺少重叠部分,还是我错过了什么?**