0-1背包问题
来源:互联网 发布:网络叫爸爸是什么意思 编辑:程序博客网 时间:2024/06/03 18:18
package coding;import java.util.Scanner;class GType{ double value; double weight; char isSelect;}public class cha9_backpack { static double maxvalue; static double totalvalue; static double maxwt; static int num; static char[] seltemp; static void backpack(GType[] goods,int i,double wt,double vt){ int k; if(wt+goods[i].weight<=maxwt){ seltemp[i]=1; if(i<num-1){ backpack(goods,i+1,wt+goods[i].weight,vt); } else{ for(k=0;k<num;++k){ goods[k].isSelect=seltemp[k]; }maxvalue=vt; } } seltemp[i]=0; if(vt-goods[i].value>maxvalue){ if(i<num-1){ backpack(goods,i+1,wt,vt-goods[i].value); }else{ for(k=0;k<num;++k){ goods[k].isSelect=seltemp[k]; } maxvalue=vt-goods[i].value; } } } public static void main(String[] args) { // TODO Auto-generated method stub double sumweight; int i; System.out.println("背包问题求解"); System.out.println("背包能够容纳的最大重量:"); Scanner input=new Scanner(System.in); maxwt=input.nextDouble(); System.out.println("可选物品重量:"); num=input.nextInt(); GType[] goods=new GType[num]; seltemp =new char[num]; totalvalue=0; for(i=0;i<num;i++){ GType t=new GType(); System.out.println("输入第"+(i+1)+"号物品的重量和价值"); t.weight=input.nextDouble(); t.value=input.nextDouble(); totalvalue+=t.value; goods[i]=t; } System.out.println("背包能够装的最大重量为"+maxwt); for(i=0;i<num;i++){ System.out.println("第"+(i+1)+"号物品重:"+goods[i].weight+"价值"+goods[i].value); } for(i=0;i<num;i++){ seltemp[i]=0; } maxvalue=0; backpack(goods,0,0.0,totalvalue); sumweight=0; System.out.println("可以将以下物品装入背包,使背包装的物品价值最大"); for(i=0;i<num;++i){ if(goods[i].isSelect==1){ System.out.println("第"+i+1+"号物品,重量:"+goods[i].weight+"价值:"+goods[i].value); sumweight+=goods[i].weight; } } System.out.println("总重量为:"+sumweight+"总价值为:"+maxvalue); }}
0 0
- 背包问题(0-1背包、完全背包、多重背包)详解
- 背包问题和0-1背包问题
- 背包问题和0-1背包问题
- 背包问题系列--"0-1背包问题"
- 背包笔记-含0/1背包问题、完全背包问题、多重背包问题、二维背包问题、分组背包问题
- 【背包问题】背包问题之0-1背包、完全背包、多重背包
- 0-1背包问题
- 0/1背包问题
- 0,1背包问题
- 0-1背包问题
- 0/1背包问题
- 0-1背包问题
- // 0-1背包问题
- 0/1背包问题
- 0-1背包问题
- 0-1背包问题
- 0-1背包问题
- 0/1背包问题
- Eclipse能Run不能Debug官方解决办法(亲测可用)
- SQL中distinct的用法(四种示例分析)
- Android Measure 体系简单总结
- [真理永垂不朽]The method XXX in the type FragmentTransaction is not applicable for the arguments XXX
- 回文
- 0-1背包问题
- docker简单使用
- java通过短信平台发送短信
- Java hashTable和hashMap的区别
- 教您使用java爬虫gecco抓取JD全部商品信息(三)
- SQL编程
- 调优案例分析与实战(五)
- SpringMVC+Hibernate
- 2017年干货满满的互联网会议 你想去哪场?