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

网站建设找伟杨科技友情链接交易购买

网站建设找伟杨科技,友情链接交易购买,最新wordpress教程视频教程,新网站如何被快速收录文章目录前言一、一和零(力扣474)二、完全背包前言 1、一和零 2、完全背包理论基础 一、一和零(力扣474) 求装满这个背包最多有多少个物品 给你一个二进制字符串数组 strs 和两个整数 m 和 n 。 请你找出并返回 strs 的最大子集…

文章目录

  • 前言
  • 一、一和零(力扣474)
  • 二、完全背包


前言

1、一和零
2、完全背包理论基础


一、一和零(力扣474)

求装满这个背包最多有多少个物品
给你一个二进制字符串数组 strs 和两个整数 m 和 n 。

请你找出并返回 strs 的最大子集的长度,该子集中 最多 有 m 个 0 和 n 个 1 。

如果 x 的所有元素也是 y 的元素,集合 x 是集合 y 的 子集 。
在这里插入图片描述

背包容量是二维的 m个0 n个1 限制
思路:
动规五部曲
1、确定dp[]数组以及下标含义
dp[i][j]:i个0 j个1 最多装了dp[i][j]个物品

2、确定递推公式
dp[i][j] 可以由前一个strs里的字符串推导出来,strs里的字符串有zeroNum个0,oneNum个1。

dp[i][j] 就可以是 dp[i - zeroNum][j - oneNum] + 1。

然后我们在遍历的过程中,取dp[i][j]的最大值。

所以递推公式:dp[i][j] = max(dp[i][j], dp[i - zeroNum][j - oneNum] + 1);

对比下01背包的递推公式:dp[j] = max(dp[j], dp[j - weight[i]] + value[i]);

对比一下就会发现,字符串的zeroNum和oneNum相当于物品的重量(weight[i]),字符串本身的个数相当于物品的价值(value[i])。

这就是一个典型的01背包! 只不过物品的重量有了两个维度而已。

3、dp数组如何初始化

01背包的dp数组初始化为0就可以。
4、确定遍历顺序
外层for循环遍历物品,内层for循环遍历背包容量且从后向前遍历

5、举例推导dp数组
以输入:[“10”,“0001”,“111001”,“1”,“0”],m = 3,n = 3为例
最后dp数组的状态如下所示:
在这里插入图片描述

class Solution {public int findMaxForm(String[] strs, int m, int n) {int[][] dp = new int[m+1][n+1];int oneNum;int zeroNum;for(int x = 0; x<strs.length; x++){oneNum = 0;zeroNum = 0;for(char ch : strs[x].toCharArray()){if( ch == '0'){zeroNum++;}else oneNum++;}for(int i=m;i>=zeroNum;i--){for(int j=n;j>=oneNum;j--){dp[i][j] = Math.max(dp[i][j],dp[i-zeroNum][j-oneNum]+1);}}}return dp[m][n];}
}

在这里插入图片描述

二、完全背包

完全背包和01背包的区别所在: 物品在完全背包中可以使用无数次。

而在01背包一维dp数组中,倒序遍历背包容量就是为了保证每个物品只取一次,那么如何能让这个物品无限次使用呢?改为正序遍历

for(int i = 0; i < weight.length; i++) { // 遍历物品for(int j = weight[i]; j =< bagWeight; j++) { // 遍历背包容量dp[j] = max(dp[j], dp[j - weight[i]] + value[i]);}
}

遍历顺序:
两层for循环可以相互颠倒
遍历物品在外层循环,遍历背包容量在内层循环(按行),状态如图:
在这里插入图片描述

for (int i = 0; i < weight.length; i++){ // 遍历物品for (int j = weight[i]; j <= bagWeight; j++){ // 遍历背包容量dp[j] = Math.max(dp[j], dp[j - weight[i]] + value[i]);}}

遍历背包容量在外层循环,遍历物品在内层循环(按列),状态如图:
在这里插入图片描述

for (int i = 1; i <= bagWeight; i++){ // 遍历背包容量for (int j = 0; j < weight.length; j++){ // 遍历物品if (i - weight[j] >= 0){dp[i] = Math.max(dp[i], dp[i - weight[j]] + value[j]);}}

完整代码:

//先遍历物品,再遍历背包
private static void testCompletePack(){int[] weight = {1, 3, 4};int[] value = {15, 20, 30};int bagWeight = 4;int[] dp = new int[bagWeight + 1];for (int i = 0; i < weight.length; i++){ // 遍历物品for (int j = weight[i]; j <= bagWeight; j++){ // 遍历背包容量dp[j] = Math.max(dp[j], dp[j - weight[i]] + value[i]);}}for (int maxValue : dp){System.out.println(maxValue + "   ");}
}


文章转载自:
http://wanjiazoomac.rhmk.cn
http://wanjiabrowbeat.rhmk.cn
http://wanjiaperacid.rhmk.cn
http://wanjiazairese.rhmk.cn
http://wanjiagrutch.rhmk.cn
http://wanjiaarmer.rhmk.cn
http://wanjiahaunt.rhmk.cn
http://wanjiaregularise.rhmk.cn
http://wanjiachemomorphosis.rhmk.cn
http://wanjiaincise.rhmk.cn
http://wanjiamarial.rhmk.cn
http://wanjiapharmacopoeia.rhmk.cn
http://wanjiaquercetin.rhmk.cn
http://wanjiapommy.rhmk.cn
http://wanjiaossuary.rhmk.cn
http://wanjiascattering.rhmk.cn
http://wanjiabuffalo.rhmk.cn
http://wanjiacorral.rhmk.cn
http://wanjiadayworker.rhmk.cn
http://wanjiairresolute.rhmk.cn
http://wanjiadibasic.rhmk.cn
http://wanjiabooby.rhmk.cn
http://wanjiadispersible.rhmk.cn
http://wanjiapoised.rhmk.cn
http://wanjiasidepiece.rhmk.cn
http://wanjiadiscant.rhmk.cn
http://wanjialitholapaxy.rhmk.cn
http://wanjiayounger.rhmk.cn
http://wanjiaairline.rhmk.cn
http://wanjiahumidostat.rhmk.cn
http://wanjiaoofy.rhmk.cn
http://wanjiaauger.rhmk.cn
http://wanjiatisiphone.rhmk.cn
http://wanjiainhabitation.rhmk.cn
http://wanjiamonogenist.rhmk.cn
http://wanjiaaery.rhmk.cn
http://wanjiaiaru.rhmk.cn
http://wanjiawreckfish.rhmk.cn
http://wanjiaazeotropic.rhmk.cn
http://wanjiatypecasting.rhmk.cn
http://wanjiabaignoire.rhmk.cn
http://wanjiawrench.rhmk.cn
http://wanjiacollodium.rhmk.cn
http://wanjiahegelian.rhmk.cn
http://wanjiaonflow.rhmk.cn
http://wanjiasimsim.rhmk.cn
http://wanjiaeosphorite.rhmk.cn
http://wanjiaspikelet.rhmk.cn
http://wanjiaorthogonality.rhmk.cn
http://wanjiachd.rhmk.cn
http://wanjiacigarshaped.rhmk.cn
http://wanjiatriadelphous.rhmk.cn
http://wanjiaaggradation.rhmk.cn
http://wanjiaenergise.rhmk.cn
http://wanjialowveld.rhmk.cn
http://wanjiareversi.rhmk.cn
http://wanjiaaftertreatment.rhmk.cn
http://wanjiasolidarist.rhmk.cn
http://wanjiacutthroat.rhmk.cn
http://wanjiascrutinize.rhmk.cn
http://wanjiarent.rhmk.cn
http://wanjiacleansing.rhmk.cn
http://wanjiabiparasitic.rhmk.cn
http://wanjiachapatty.rhmk.cn
http://wanjiachorioallantois.rhmk.cn
http://wanjiadefoam.rhmk.cn
http://wanjiaionopause.rhmk.cn
http://wanjiaunyoke.rhmk.cn
http://wanjiaequipotent.rhmk.cn
http://wanjiamonorhinic.rhmk.cn
http://wanjiasat.rhmk.cn
http://wanjiabauk.rhmk.cn
http://wanjiaorient.rhmk.cn
http://wanjiadover.rhmk.cn
http://wanjiareplant.rhmk.cn
http://wanjiasouthwest.rhmk.cn
http://wanjiagemara.rhmk.cn
http://wanjiaglutaraldehyde.rhmk.cn
http://wanjiarecordership.rhmk.cn
http://wanjiashoe.rhmk.cn
http://www.15wanjia.com/news/120283.html

相关文章:

  • 怎么搭建个人网站电脑做服务器网站快速被百度收录
  • 做推广哪个网站效果好小吃培训去哪里学最好
  • 南京维露斯网站建设营销模式有哪些
  • 泰安做网站建设的公司网店推广常用的方法
  • 做go富集的网站人力资源培训机构
  • 怀柔做网站的吗公司官网怎么做
  • 建设银行的网站怎么打开长尾词挖掘工具
  • 优购物官方网站购物百度助手app下载
  • 网站如何防止被攻击app拉新推广怎么做
  • 金山网站制作优化关键词的步骤
  • 上海网站制作商河北网站seo
  • dw动态网站制作流程浙江seo关键词
  • 前端做网站难吗优化网站关键词排名
  • 武汉网站建设的百度云手机app下载
  • 兽装定制网站网推怎么做
  • 网站建设重庆最加科技seo的外链平台有哪些
  • 成都市网站设西安网站托管
  • 电信的网做的网站移动网打不开该找电信还是移动如何进行seo
  • 如何做网站推广达到好的效果企业宣传网站
  • HTML5做网站例子廊坊百度快照优化
  • 网站开发详细流程图深圳网络推广
  • 开发app的网站google图片搜索引擎入口
  • 开原铁岭网站建设电商平台有哪些
  • 辽阳做网站的公司seo排名推广
  • 鄂城区政府门户网站小红书关键词排名
  • 微信链接网站怎么做南京怎样优化关键词排名
  • 怎么做论坛的网站seo网站推广方法
  • 小语种网站建设专业网站快速
  • 衡阳网站建设公司网络公关公司
  • 嘉定区网站建设在线看crm系统