算法思想:
1、如果在某个时刻,选择的数据项符合目标重量,那么工作便完成了
2、从选择的第一个数据项开始,剩余的数据量的加和必须符合背包的目标量减去
第一个数据项的重量,这是一个新的目标重量
3、逐个尝试组合剩余数据项的可能性,但是注意不要尝试所有的组合,
因为只要数据项的和大于目标重量的时候,就会停止添加数据
4、如果没有合适的组合,就放弃第一个数据,从第二个数据开始尝试
5、从第三个数据开始,直到尝试所有的组合
public class Knapsack {
private int [] weights;//可供选择的重量
private boolean [] selects;//记录是否被xuanze
public Knapsack(int [] weights) {
this.weights = weights;
selects = new boolean[weights.length];
}
//找到符合重量的组合
//param total 总重量
//param index 可供选择的重量下标
public void knapsack(int total,int index) {
if(total<0|| total >0&& index >=weights.length) {
return ;//未找到符合的方法
}
if(total ==0) {//总重量为0&#