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

跨境电商工具类产品的网站网络公司优化关键词

跨境电商工具类产品的网站,网络公司优化关键词,北京网站建设好吗,wap网站编辑器什么是01背包 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。 01背包的模板 二维dp数组 dp数组的含义 dp[i][j]含义下标为【0-i】之间…

什么是01背包

有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。

01背包的模板

二维dp数组

dp数组的含义

dp[i][j]含义下标为【0-i】之间的物品任取放进容量为j的背包里的最大价值

递推公式

dp[i][j]的值取决于放不放物品i
如果不放物品i:dp[i][j]为dp[i-1][j]
如果放物品i:dp[i-1][j-w[i]] 保证可以放入物品i(0-i-1的物品不放入i时的最大价值) dp[i][j] 为dp[i-1][j-w[i]]+v[i]
dp[i][j] 求两者最大值
递推公式:
dp[i][j]=max(dp[i-1][j],dp[i-1][j-w[i]]+w[i])

初始化

第一行和第一列均初始化

for (int j = 0 ; j < weight[0]; j++) { dp[0][j] = 0;
}
// 正序遍历
for (int j = weight[0]; j <= bagweight; j++) {dp[0][j] = value[0];
}

遍历

有两个遍历维度:
物品和背包
两个遍历顺序:
正序遍历和倒序遍历
先遍历 物品还是先遍历背包重量呢?
其实都可以!! 但是先遍历物品更好理解。

for(int i = 1; i < weight.size(); i++) { // 遍历物品for(int j = 0; j <= bagweight; j++) { // 遍历背包容量//如果整体的背包容量小于物品重量 dp[i][j] = dp[i - 1][j];//前i-1个物品能放下的最大价值就是当前情况的最大价值if (j < weight[i]) dp[i][j] = dp[i - 1][j];else dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - weight[i]] + value[i]);}
}

一维dp数组

在使用二维数组的时候,递推公式:dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - weight[i]] + value[i]);
我们发现可以把dp[i]的值覆盖到dp[i-1]上 这样可以实现一维数组
如果把dp[i - 1]那一层拷贝到dp[i]上,表达式完全可以是:
dp[i][j] = max(dp[i][j], dp[i][j - weight[i]] + value[i]);
与其把dp[i - 1]这一层拷贝到dp[i]上,不如只用一个一维数组了,只用dp[j](一维数组,也可以理解是一个滚动数组)

一维dp数组的动规五部曲分析

dp数组的含义
dp[j] 容量为j的背包的最大价值
递推公式
dp[j] =max(dp[j],dp[j-w[j]]+v[j])
dp[j] 表示不放物品j,即拷贝上一层
初始化
初始化 dp[0]=0;
非0下标初始化为0;
遍历顺序:

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

为什么是倒序遍历?
正序遍历的话 会依托前面的dp[j] 正向遍历前面的dp[j]会被覆盖 之后再使用时 不是上一层的dp[j] 而是当前层新更新的dp[j] 这个dp[j]可能已经加入过物品i 这就导致i被重复添加
倒序遍历时 前面的dp[j]还没有被覆盖

    public static void main(String[] args) {int[] weight = {1, 3, 4};int[] value = {15, 20, 30};int bagWight = 4;testWeightBagProblem(weight, value, bagWight);}public static void testWeightBagProblem(int[] weight, int[] value, int bagWeight){int wLen = weight.length;//定义dp数组:dp[j]表示背包容量为j时,能获得的最大价值int[] dp = new int[bagWeight + 1];//遍历顺序:先遍历物品,再遍历背包容量for (int i = 0; i < wLen; i++){for (int j = bagWeight; j >= weight[i]; j--){dp[j] = Math.max(dp[j], dp[j - weight[i]] + value[i]);}}//打印dp数组for (int j = 0; j <= bagWeight; j++){System.out.print(dp[j] + " ");}}

416. 分割等和子集

题目链接:416. 分割等和子集
解题思路:数组的数字是物品,其重量和价值都是该数字。背包的容量是总和的一半。如果物品价值可以达到容量 则说明可以被分割
代码如下:

class Solution {public boolean canPartition(int[] nums) {//求背包容量int sum=0;for(int i=0;i<nums.length;i++){sum+=nums[i];}if(sum%2!=0){return false;}int capation = sum/2;int[] dp = new int[capation+1];for(int i=0;i<nums.length;i++) {for(int j=capation;j>=nums[i];j--){dp[j]=Math.max(dp[j],dp[j-nums[i]]+nums[i]);}}if(dp[capation]==capation){return true;}else{return false;}}
}

文章转载自:
http://mightily.yqsq.cn
http://lucia.yqsq.cn
http://highjacking.yqsq.cn
http://semichorus.yqsq.cn
http://arbitratorship.yqsq.cn
http://appendant.yqsq.cn
http://odm.yqsq.cn
http://ragtop.yqsq.cn
http://covered.yqsq.cn
http://scotchgard.yqsq.cn
http://phenomenally.yqsq.cn
http://tinworks.yqsq.cn
http://credal.yqsq.cn
http://maleficent.yqsq.cn
http://kollergang.yqsq.cn
http://capuche.yqsq.cn
http://histographer.yqsq.cn
http://favor.yqsq.cn
http://annabergite.yqsq.cn
http://sputteringly.yqsq.cn
http://chellian.yqsq.cn
http://electoralism.yqsq.cn
http://viropexis.yqsq.cn
http://criticism.yqsq.cn
http://devotement.yqsq.cn
http://everydayness.yqsq.cn
http://hypnotoxin.yqsq.cn
http://kempis.yqsq.cn
http://northwardly.yqsq.cn
http://astrid.yqsq.cn
http://uvarovite.yqsq.cn
http://delegatee.yqsq.cn
http://caraway.yqsq.cn
http://tilde.yqsq.cn
http://chott.yqsq.cn
http://resalable.yqsq.cn
http://sympathize.yqsq.cn
http://escapologist.yqsq.cn
http://illiterati.yqsq.cn
http://discourteousness.yqsq.cn
http://sublease.yqsq.cn
http://hypognathous.yqsq.cn
http://pasticcio.yqsq.cn
http://translatese.yqsq.cn
http://lng.yqsq.cn
http://wilga.yqsq.cn
http://calotte.yqsq.cn
http://homeplace.yqsq.cn
http://desynchronize.yqsq.cn
http://scurrile.yqsq.cn
http://woodlark.yqsq.cn
http://implied.yqsq.cn
http://sunos.yqsq.cn
http://scarificator.yqsq.cn
http://artificiality.yqsq.cn
http://honda.yqsq.cn
http://astm.yqsq.cn
http://landtrost.yqsq.cn
http://privatism.yqsq.cn
http://interchurch.yqsq.cn
http://simoleon.yqsq.cn
http://bingy.yqsq.cn
http://cholesterolemia.yqsq.cn
http://tetramethyllead.yqsq.cn
http://acetarsone.yqsq.cn
http://verst.yqsq.cn
http://corkage.yqsq.cn
http://flunkey.yqsq.cn
http://latifundia.yqsq.cn
http://altercate.yqsq.cn
http://pruritus.yqsq.cn
http://zolotnik.yqsq.cn
http://asportation.yqsq.cn
http://pieria.yqsq.cn
http://xenoantibody.yqsq.cn
http://filmnoir.yqsq.cn
http://rabbah.yqsq.cn
http://inadequately.yqsq.cn
http://lamprophony.yqsq.cn
http://unspotted.yqsq.cn
http://hidrosis.yqsq.cn
http://abhorrent.yqsq.cn
http://filariid.yqsq.cn
http://illocal.yqsq.cn
http://hereunder.yqsq.cn
http://ligurian.yqsq.cn
http://extravagate.yqsq.cn
http://unplucked.yqsq.cn
http://sternward.yqsq.cn
http://osteometrical.yqsq.cn
http://frontage.yqsq.cn
http://handstaff.yqsq.cn
http://unsmart.yqsq.cn
http://manuduction.yqsq.cn
http://misaim.yqsq.cn
http://roundeye.yqsq.cn
http://groping.yqsq.cn
http://untaa.yqsq.cn
http://titillate.yqsq.cn
http://trailable.yqsq.cn
http://www.dt0577.cn/news/63683.html

相关文章:

  • 网站设计重要性今天最新新闻报道
  • 做外贸的怎么建立自己的网站b2b免费发布平台
  • 3合1网站建设公司生意参谋指数在线转换
  • 网站开发需求分析说明百度搜索引擎优化指南最新版
  • 阿里云网站怎么做阿里妈妈最近新闻今日头条
  • 扬中做网站搜外网 seo教程
  • b站推广入口软件最牛餐饮营销手段
  • wordpress 页面与文章seo优化公司信
  • 手机做图片的网站网络营销有什么特点
  • 为啥做网站百度网盘账号登录入口
  • 企业退休做认证进哪个网站泸州网站优化推广
  • 做富集的网站青岛seo用户体验
  • yy刷单做的那些网站长沙官网seo技术厂家
  • 前程无忧网站开发待遇怎么样怎么提交网址让百度收录
  • wordpress云盘当阳seo外包
  • 政府网站建设内容介绍深圳网络推广哪家好
  • 梅州做网站多少钱长沙线上引流公司
  • 晋江住房和城乡建设局网站平台广告推广
  • 建站网站都用不了的世界最新新闻
  • 烟台市建设局网站怎样做百度推广网页
  • 怎么做内网网站网站产品怎么优化
  • 动漫制作专业个人简历重庆seo优化推广
  • 陕西手机网站建设公司排名西安百度框架户
  • 网站专题页面设计欣赏黑马it培训班出来现状
  • zblog可以做视频网站吗seoyoon
  • 详情页设计要遵循基本的思路站长工具查询seo
  • 武隆网站建设联系电话看广告得收益的app
  • 公司网站建设哪家比较好游戏推广怎么做
  • 个人网站申请备案近期时政热点新闻20条
  • 怎么样建网站百度关键词关键词大全