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

未来做哪些网站能致富wordpress宝宝网商城免费模板

未来做哪些网站能致富,wordpress宝宝网商城免费模板,昆明企业网站模板建站,游戏优化大师手机版背包问题是一种组合优化的问题#xff0c;它有多种变体#xff0c;但最常见的两种是0/1背包问题和完全背包问题。 0/1背包问题 问题描述#xff1a; 假设你有一个背包#xff0c;背包的容量为W#xff08;可以是重量或者体积等度量#xff09;#xff0c;同时有n个物品…背包问题是一种组合优化的问题它有多种变体但最常见的两种是0/1背包问题和完全背包问题。 0/1背包问题 问题描述 假设你有一个背包背包的容量为W可以是重量或者体积等度量同时有n个物品每个物品都有自己的重量w[i]和价值v[i]。现在的目标是选择一些物品放入背包使得背包中物品的总价值最大但背包的总重量不能超过W。 特点 每个物品只能选择一次即不能分割。 选择放入背包或者不放入背包。 解决方案 动态规划这是解决0/1背包问题最常见的方法。通过构建一个二维数组dp其中dp[i] [j]表示考虑前i个物品背包容量为j时的最大价值。状态转移方程为 dp[i] [j]max⁡(dp[i−1] [j],dp[i−1] [j−w[i]]v[i]), dp[i] [j]max(dp[i−1] [j],dp[i−1] [j−w[i]]v[i]) 其中如果选择第i个物品则背包容量减去该物品的重量总价值加上该物品的价值如果不选择则总价值不变。 已知w[]和v[] int[][] dp new int[n 1][m 1]for(int i 1; i n; i) {//遍历物品注意下标的对应关系这里都假设物品从下标1开始记录for(int j 1; j m; j) {//遍历容量if(j w[i])dp[i][j] Math.max(d[i-1][j], dp[i-1][j-w[i]] v[i]); } } 但是我们观察动态规划方程发现对于考虑前i个物品的时候我们只需要用到i-1这一个状态所以我们能不能将二维的数组压缩成一维的呢答案显然是可以的 我们现在设dp[j]是容量j时的最大价值因为我们外层循环的i一直在自增所以对于上一次的dp[j]就相当与dp[i-1] [j], 所以我们只要不断更新dp[j]就行。那是否是在上述代码的基础上将递推方程由 dp[i] [j]max⁡(dp[i−1] [j],dp[i−1] [j−w[i]]v[i])改为dp[j] max(dp[j], dp[j-w[i]] v[i])就万事大吉了呢宝贝你显然是太天真了 我们再来捋一下如果我们用for(int j 1; j m; j)我们每次更新都是从低位开始的并且后续的递推要用到前面的结论那我们来举例一下 如果有3个物品他们的花费和价值是 W: 1 2 3 V: 2 1 3 对于容量为5的背包 i1时 dp[1]2, dp[2] 4, dp[3] 6, dp[4] 8, dp[5] 10 有没有发现端倪为毛我这次的修改全体现到之后的更新上了这不对吧按我们的设想因该是i2的那次才会应用上才对但是这在完全背包问题中会被用到 我们换倒序一下for(int j m; j 0; j--) i1时 dp[5] 2, dp[4] 2, dp[3] 2, dp[2] 2, dp[1] 2; i2时 dp[5] 3, dp[4] 3, d[3] 3, dp[2] 2, dp[1] 2 i3时 dp[5] 5, dp[4] 5, d[3] 3, dp[2] 2, dp[1] 2 这不就全对上了嘛所以倒序可以避免这次的修改影响这次其它容量时的更新 代码如下 已知w[]和v[] int[] dp new int[m 1]for(int i 1; i n; i) {//遍历物品注意下标的对应关系这里都假设物品从下标1开始记录for(int j m; j 0; j--) {//遍历容量dp[j] Math.max(dp[j], dp[j-w[i]] v[i]); } } 还有个无伤大雅的小优化for(int j m; j w[i]; j--), 因为你剩余的空间如果都放不下这个物体了那这个物体的价值自然不会对答案产生影响并且后续的遍历中也不存在能放得下这个物体的情况可以直接跳过 已知w[]和v[] int[] dp new int[m 1]for(int i 1; i n; i) {//遍历物品注意下标的对应关系这里都假设物品从下标1开始记录for(int j m; j w[i]; j--) {//遍历容量dp[j] Math.max(dp[j], dp[j-w[i]] v[i]); } } 完全背包问题 问题描述 与0/1背包问题类似但每个物品可以无限次选择。 特点 每个物品可以被选择多次。 解决方案 动态规划同样使用动态规划但是状态转移方程有所不同因为物品可以被重复选择 dp[j]max⁡(dp[j],dp[j−w[i]]v[i]) , dp[j]max⁡(dp[j],dp[j−w[i]]v[i])其中对于每个物品我们尝试多次放入背包直到背包容量不足以再放入该物品为止。 代码 已知w[]和v[] int[] dp new int[m 1]for(int i 1; i n; i) {//遍历物品注意下标的对应关系这里都假设物品从下标1开始记录for(int j 1; j w; j) {//遍历容量if(j w[i])dp[j] Math.max(dp[j], dp[j-w[i]] v[i]); } }
http://www.w-s-a.com/news/918964/

相关文章:

  • 帝国网站单页做301南京旅游网站建设公司
  • 网站sem优化怎么做网站建设推广安徽
  • 比较好的室内设计网站潍坊网络科技
  • 南宁网站建设公设计联盟网站
  • 多个图表统计的网站怎么做百度推广费2800元每年都有吗
  • 连江县住房和城乡建设局网站企业类网站模版
  • 临沂seo整站优化厂家网站建设 大公司排名
  • 网站开发有哪些方式百度导航怎么下载
  • 网站认证免费视频直播网站建设方案
  • 瀑布流分享网站源代码下载网站构建的一般流程是什么
  • wordpress 4.9 多站wordpress邮箱解析
  • 微信网站开发企业汽车网站设计模板
  • 如何提升网站转化率遵义市公共资源交易平台
  • 网站目录管理模板企业解决方案部
  • 建设网站上申请劳务资质吗珠海哪个公司建设网站好
  • c2c商城网站建设在微信怎么开发公众号
  • 美的公司网站建设的目的做个网站要钱吗
  • 和县建设局网站孟州网站建设
  • 网站与规划设计思路竞价培训课程
  • 网站建设设计视频专业设计企业网站
  • 湖南省建设工程网站cerntos wordpress
  • 主机屋的免费空间怎么上传网站广告公司的经营范围有哪些
  • 门户网站建设公司案例门户建设是什么意思
  • 深圳seo专家东莞网站关键词优化排名
  • 套用别人产品图片做网站如何在阿里云自主建网站
  • 网站开发需要用哪些东西wordpress页面参数
  • 大连模板网站制作哪家好wordpress 安装不上
  • 宝塔搭建网站首页图片点击率如何提高
  • 长沙找人做网站wordpress如何安装模板
  • 比较好的国外网站建设公司wordpress短代码可视化