Java实现01背包问题的简单思路
作者:互联网
0-1背包问题:
给定N件物品和一个容量为V的背包。放入第i件物品耗费的空间为weight[i] ,得到的价值是 value[i] 。
问:哪些物品装入背包可使价值总和最大?最大是多少?
解题思路:
假设背包容量为8,有五间物品分别如下:
物品 | 重量 | 价值 |
---|---|---|
1 | 6公斤 | 48元 |
2 | 1公斤 | 7元 |
3 | 5公斤 | 40元 |
4 | 2公斤 | 12元 |
5 | 1公斤 | 8元 |
面对每个物品,我们只有选择拿与不拿两种选择,不能够选择装入物品的一部分,也不能装入同一物品多次。
重量 | 价值 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|---|---|
6 | 48 | 0 | 0 | 0 | 0 | 0 | 48 | 48 | 48 |
1 | 7 | 7 | 7 | 7 | 7 | 7 | 48 | 55 | 55 |
5 | 40 | 7 | 7 | 7 | 7 | 40 | 48 | 55 | 55 |
2 | 12 | 7 | 12 | 19 | 19 | 40 | 48 | 55 | 60 |
1 | 8 | 8 | 15 | 20 | 27 | 40 | 48 | 56 | 63 |
用简单的一维数组来写,方便大家理解
看代码吧!!!
标签:公斤,01,Java,装入,件物品,背包,物品,价值 来源: https://blog.csdn.net/hdushsh/article/details/122592417