思路
一个能装入总体积为T
的背包和n
件体积分别为w1,w2,…wn
的物品,能否从n
件物品中挑选若干件恰好装背包,即使w1+w2+…+wm=T
相当于取一个向量 n
= (x_1, x_2, ..., x_n)
,其中 x_i \in \{0, 1\}
,使得 \sum_{i=1}^n x_i w_i = T
,求所有满足条件的 n
。
使用暴力 dfs
搜索,搜索每一件物品的选择情况,符合条件时输出。
使用 sum+w[k]<=T
进行剪枝,提高运行速度
总情况数为 2^n
,时间复杂度为 O(2^n)
。
代码及解释