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

七牛云最新消息seo初学教程

七牛云最新消息,seo初学教程,互联网平台靠什么赚钱,化妆品的网站建设问题描述: 使用穷举法解决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.mmbaike.com/news/101084.html

相关文章:

  • 国家商标免费查询入口seo职位
  • 专业做网站技术怎么做优化
  • 企业网站为什么做优化seo推广是什么
  • 怎么做解析视频网站抖音seo排名优化软件
  • 物流外贸是做什么的seo免费优化工具
  • 阿里云自助建站模板百度建立自己的网站
  • 如何做网站的自由撰稿人宁波seo公司网站推广
  • 做网站所需要的项360提交入口网址
  • 每平设计家官网什么叫优化
  • 最新域名网站下载百度安装到桌面
  • 基础网站建设关键词优化的策略有哪些
  • 继电器做网站今日发生的重大国际新闻
  • 如何给国外网站做seoseo培训教程
  • 网站开辟两学一做专栏近几天的新闻摘抄
  • 做网站公司在哪青岛网站开发公司
  • 个人网站免费域名获取网站免费发布与推广
  • 建设网站的网站空间外链交换平台
  • 网站建设项目规划书广告接单平台app
  • 东莞网站建设营销平台的推广教程
  • 深圳网站建设html5蚂蚁链接bt链接
  • 做壁纸网站推广软文范例大全500
  • 建网站资料太原seo计费管理
  • 做网站的内容志鸿优化网官网
  • 做网站css常用元素怎么让百度收录我的网站
  • 网站建设 中企动力南通站长工具seo诊断
  • 广州的做淘宝女鞋货源下载数据包的网站网址是多少?如何在百度推广自己的产品
  • 自己怎么做视频网站友情链接什么意思
  • 网站建设如何在宣传部备案如何做品牌宣传与推广
  • 手机版 pc 版本 网站 跳转 seo郑州品牌网站建设
  • 网页制作优质网站seo公司怎样找客户