穷举法解决01背包利用暴力破解法(穷举法)
问题描述:给定n个重量为{w1, w2, … ,wn}、价值为{v1, v2, … ,vn}的物品和一个容量为C的背包,求这些物品中的一个最有价值的子集,且要能够装到背包中。
包的总容量15kg
物品情况
物品编号 | 价值 | 重量 |
1 | 4$ | 12kg |
2 | 2$ | 2kg |
3 | 2$ | 1kg |
4 | 1$ | 1kg |
5 | 10$ | 4kg |
思路:
- 利用递归进行遍历求出各个的可能性
- 将遍历出的结果存入int[] back = new int[N],进行缓存
- 没存入一个back[]数组,进行遍历,将符合的题目要求allWigth[总的重量]<=15的,存入到Map<String, Integer>中
- String表示背包情况. Integer表示总价值
- 在存入的Map<String, Integer>的所有数据中,遍历出最大的Integer,也就是最大的价值
- 根据Integer值,遍历出对应的String,就是背包的情况
代码
利用递归求出所有的背包情况
结果
所有背包情况
最终代码
输出
中间符合标准的,能放入背包的情况
















