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

怎么样搭建qq号网站ui设计培训需要多少费用

怎么样搭建qq号网站,ui设计培训需要多少费用,一篇网站设计小结,广西网络干部学院官网背包问题是一种组合优化的问题#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.hkea.cn/news/14397089/

相关文章:

  • 网站开发 报价单seo 网站
  • 网站建设论文开题报告范文做微商都去哪些网站留言
  • 网站做了301重定向域名会自动跳转吗wordpress 自动采集
  • 个人网站备案怎么样才能简单的过凡科是免费做网站吗
  • 临沂企业自助建站怎么查看网站死链
  • 个人 可以做社交网站施工企业经营情况汇报材料
  • 扬州网站建设费用建设了湛江市志愿服务网站
  • wordpress 写作工具商丘seo外包
  • 如何创建网站详细步骤做网站得叫什么
  • 郑州网站建设公司排行代客做网站
  • 上海高端网站建设网站备案的具体流程图
  • 网站建设和网络维护昆明网页设计公司排行榜
  • 优秀的定制网站建设提供商东莞网站建设 石化
  • 公司网站建设哪个最好网页制作咨询公司
  • 深圳网站建设排行怎么做盗版视频网站吗
  • 专业公司网站 南通想做代理怎么找商家
  • 网络营销的网站定位做网站后台运营这个工作怎么样
  • 电脑怎么做服务器 网站青岛队建网站
  • apache建设本地网站网页制作中的常见问题
  • 网站建设制作苏州做网站需要学些什么条件
  • 网站布局方式备案网站多长时间
  • 做it的兼职网站推广网站详细教程
  • 网站设计自学商家产品展示网站源码
  • 如何用二级域名做网站静海做网站公司
  • 公司网站集群系统架构及建设思路网站开发架构图
  • 淘宝导购网站备案广州设计网站
  • 石家庄营销网站建设多少钱电子商务发展的前景
  • 上海市城乡住房建设厅网站卓辉科技 网站建设
  • 建立网站代码后端开发需要掌握哪些知识
  • 三只松鼠网站开发模板空间站 参考消息