背包DP
本文最后更新于 2025年3月17日 晚上
问题引入
假设有一个容量为10的背包,而物品的价值和体积如下表所示,我们的目标是在容量不超过背包的前提下拿走尽可能多的价值的物品
序号 | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|
体积 | 3 | 4 | 6 | 2 | 3 |
价值 | 4 | 3 | 7 | 6 | 2 |
对于这种问题我们发现对于一个物品只有拿和不拿两种情况,因此我们可以通过这个来枚举。
所有情况是
假设
那么如何获得
时间复杂度优化
但是如果以一棵树来看,它访问了许多重复的路径,进行了许多重复的计算,因此看上去复杂度高。那么我们首要解决的问题就是如何减少重复的计算。我们将得到
空间复杂度优化
明显对于任意一个