问题
有 n 个物品,重量分别为 W(i), 现有一包裹负重 W, 是否能从 n 个物品中取若干个物品刚好满足背包负重。
原理
当不选 W(n) 的物品时 knap(w, n-1) 是 knap(w, n)的解,当选 W(n) 的物品时 knap(w - W(n), n-1) 是 knap(w, n)的解。这就有了递归的性质,判断两种情况。
递归算法
1 | // 每个物品的重量 |
有 n 个物品,重量分别为 W(i), 现有一包裹负重 W, 是否能从 n 个物品中取若干个物品刚好满足背包负重。
当不选 W(n) 的物品时 knap(w, n-1) 是 knap(w, n)的解,当选 W(n) 的物品时 knap(w - W(n), n-1) 是 knap(w, n)的解。这就有了递归的性质,判断两种情况。
1 | // 每个物品的重量 |