背包算法例子(java版)

背包问题

这是我前段时间在书本上学到的一个算法,借用书本的例子说明一下。代码我自己手打测试成功!

假设一个背包的负重量最多可达8公斤,而希望在背包中装入负重范围内总价最多的物品,假设装入水果的编号、单价、与重量如表
编号 名称 水果 单价
0 李子 4kg NT$4500
1 苹果 5kg NT$5700
2 橘子 2kg NT$2250
3 草莓 1kg NT$1100
4 甜瓜 6kg NT$6700
编程找到答案。
分析
背包问题属于最佳化问题,要解决最佳化问题可以使用“动态规划”,从空集开始,每增加一个元素就先求出该阶段的最佳解,直到所有元素加入至集合中,最终得到的就是最佳解。
以背包问题为例,这里使用两个阵列value和item,前者表示目前的最佳解所得的总价,后者表示最后一个放至背包的水果,假设有负重为1-8kg的背包8个,并对每个背包求其最佳解,逐步将水果放入背包中,并求该阶段的最佳解。
表1:放入李子的求解过程
背包负重 1 2 3 4 5 6 7
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值