当前位置: 首页 > news >正文

做网站优化推广福建省人民政府门户网站

做网站优化推广,福建省人民政府门户网站,合肥网站开发公司,phpcms多个网站问题描述: 使用穷举法解决0/1背包问题。问题描述:给定n个重量为{w1, w2, … ,wn}、价值为{v1, v2, … ,vn} 的物品和一个容量为C的背包,求这些物品中的一个最有价值的子集,且要能够装到背包中。 穷举法:每件物品装还是…

问题描述:

使用穷举法解决0/1背包问题。问题描述:给定n个重量为{w1, w2, … ,wn}、价值为{v1, v2, … ,vn}

 的物品和一个容量为C的背包,求这些物品中的一个最有价值的子集,且要能够装到背包中。

穷举法:每件物品装还是不装有两种选择,使用0-表示不装,1表示装,n件物品就有2^n种,穷举2^n种,找到符合符合weight背包容量的且为价值最大的方式。

public class Main01 {//穷举法public void pack01(int weight,int[] wt,int[] val){int n = wt.length;int count= (int) Math.pow(2,n);int maxVal = 0;//枚举32种情况,并且记录符合weight重量背包的最大价值for (int i = 0; i < count; i++) {String res = String.format("%5s",Integer.toBinaryString(i)).replace(' ','0');System.out.print(res+"  ");int sumVal = 0;int sumWeight=0;for (int j = 0; j < n; j++) {//为1时表示装该物品 0表示不准装if (res.charAt(j)=='1') {sumVal += val[j];sumWeight += wt[j];}if (sumWeight<=weight){maxVal = Math.max(sumVal,maxVal);}}System.out.println("价值:"+sumVal+"重量:"+sumWeight);}//打印最大价值下对应的背包实际重量和所装物品的状态for (int i = 0; i<count; i++) {String res = String.format("%5s",Integer.toBinaryString(i)).replace(' ','0');int sumVal = 0;int sumWeight=0;for (int j = 0; j < n; j++) {if (res.charAt(j)=='1') {sumVal += val[j];sumWeight += wt[j];}}if (sumVal==maxVal&&sumWeight<=weight){System.out.println("当背包重量为"+weight+"时:最大价值:"+sumVal+"  总重量: "+sumWeight+"  方式:"+res);break;}}}public static void main(String[] args) {Main01 main01 = new Main01();int[] wt = {1, 2, 1, 12, 4};int[] val = {1, 2, 2, 4, 10};main01.pack01(15, wt, val);}
}

 输出结果:

 二维dp数组:

dp[i][w]数组含义:对于前i个物品,当前背包容量为w时,可装下的最大值是dp[i][w]。

dp[i-1][w-wt[i-1]]+val[i-1]:装物品i的价值

dp[i-1][w]:不装物品i的价值

因此dp[i][w]取装物品 i dp[i-1][w-wt[i-1]]+val[i-1]  和  不装物品i dp[i-1][w] 的最大值

public class Main01 {public static void main(String[] args) {int[] wt = {1, 2, 1, 12, 4};int[] val = {1, 2, 2, 4, 10};int res = pack01(15,wt,val);System.out.println("最大价值:"+res);}public static int pack01(int weight,int[] wt,int[] val){int n = wt.length;//dp[i][w]数组含义:对于前i个物品,当前背包容量为w时,可装下的最大值是dp[i][w]int[][] dp = new int[n+1][weight+1];for (int i = 1; i <= n; i++) {for (int w = 1; w <= weight; w++) {if (wt[i-1]>w){//不能装入背包dp[i][w] = dp[i-1][w];}else {//择优装入背包dp[i][w] = Math.max(dp[i-1][w-wt[i-1]]+val[i-1],dp[i-1][w]);}}}//打印dp表for (int i = 0; i <=n ; i++) {for (int j = 0; j <=weight ; j++) {if (j<weight){System.out.print(dp[i][j]+",");}else {System.out.print(dp[i][j]);}}System.out.println();}return dp[n][weight];}
}

输出结果:

http://www.dinnco.com/news/11432.html

相关文章:

  • 网站开发与维护的工资seo搜索引擎优化策略
  • 网站开发平台的定义微商怎么引流被别人加
  • 企业咨询管理是做什么的郑州百度seo排名公司
  • 深圳做网站知名排行大连今日新闻头条
  • 备用网站怎么做天津推广的平台
  • 宁乡电商网站建设报价网络推广软件有哪些
  • 陕西有没有做网站好的公司网站流量统计分析
  • 商城网站架构ks免费刷粉网站推广马上刷
  • 电子商务网站建设合同范本成都网站优化排名
  • 深圳动漫制作seo入门版
  • 成都哪个公司做网站如何快速推广app
  • 手机定制网站seo优化信
  • 深圳四站合一网站建设电话网络营销ppt怎么做
  • 厦门建设局网站2018软件排名优化
  • 去年做哪些网站能致富曼联官方发文
  • 多语言网站怎么做幽默软文经典案例300
  • 网站的建设流程是什么百度怎么优化网站关键词
  • 网站关键词效果追踪怎么做淘宝推广
  • 做系统哪个网站上的好软文营销的五大注意事项
  • 邢台手机网站建设地方企业网站营销的实现方式
  • 营销型网站建设推来客网络真人seo点击平台
  • php美食网站开发的意义常见的推广平台有哪些
  • 设计师一般放作品的网站培训心得体会800字
  • 百度seo网站优化怎么做自助建站系统代理
  • 做网站公司怎么找客户seo服务工程
  • 网络营销顾问培训苏州整站优化
  • 英文网站推荐seo去哪学
  • 哪里有做网站的公司百度最容易收录的网站
  • 党的建设信息网站关键词优化seo
  • 手机代理服务器免费版seo自动推广软件