题目描述就不用说了,这里直接给上数据:
背包的容量 : 20
物品的质量:2 3 4 5 9
物品的价钱:3 4 5 8 10
其实这种问题,简单了就是每走一步都会有选和不选的两种情况,而这两种情况,必须要选择其中最好的情况:
使用B(K,W): k 个商品 ; W 剩下的空间,来表示当前的状态。
可以将选择树和状态方程相对应:
对于最终的数组都出出现以下情况:
所以对于背包问题有如下代码:
package com.lanqiao.study;
/**
* 算法描述
* 背包重量:2 3 4 5 9
* 价值: 3 4 5 8 10
* 背包容量: 20
* B(K,W): k 个商品 ; W 剩下的空间
*/
public class 背包问题 {
public static void main(String[] args) {
//对于每一种的商品都有偷和不偷的两种情况