0-1背包问题

来源:互联网 发布:淘宝信誉互刷平台 编辑:程序博客网 时间:2024/06/04 18:22

代码如下:

public static List<Goods> getbackage(List<Goods> list,double weight,int i){    List<Goods> res=new ArrayList<>();    //判断是否还有下一个物品 没有下一个物品判断当前物品是否能放的下    if(i==list.size()-1){        if(list.get(list.size()-1).getWeight()<weight){            res.add(list.get(list.size()-1));        }        return res;    }    //输入当前物品放不下了,尝试放置下一个物品    if(list.get(i).getWeight()>weight){        return getbackage(list,weight,i+1);    }    else{        List<Goods> alist=getbackage(list,weight,i+1);//不放入当前物品        List<Goods> blist=getbackage(list,weight-list.get(i).getWeight(),i+1);//放入当前物品        double a=getvalues(alist);        double b=list.get(i).getValue()+getvalues(blist);        //比较放入当前物品和不放入当前物品的值        if(a>b)        {            return alist;        }else{            blist.add(list.get(i));            return blist;        }    }}

1 0
原创粉丝点击