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

江西东乡网站建设学网络推广培训

江西东乡网站建设,学网络推广培训,可以做请柬的网站,山东住房与城乡建设厅网站01背包(滚动数组方法) 学习资料:代码随想录 (programmercarl.com) 题目链接(和上次一样):题目页面 (kamacoder.com) 思路 使用一维滚动数组代替二维数组。二维数组的解法记录在:代码随想录算…

01背包(滚动数组方法)

学习资料:代码随想录 (programmercarl.com)

题目链接(和上次一样):题目页面 (kamacoder.com)

思路

使用一维滚动数组代替二维数组。二维数组的解法记录在:代码随想录算法训练营第四十五天(动态规划篇)|01背包-CSDN博客

1. dp[j]定义

容量为j的背包可以背的物品的最大价值。

2. 递推公式

dp[j] = max(dp[j], dp[j - weight[i]] + value[i])

3. 初始条件:

dp[0] = 0, 根据递推公式,dp[j]取当前和前面的值的最大值,题目给的价值都是正整数,那么非0下标都初始化为0就可以了。

4. 遍历顺序

先遍历物品,再从大到小遍历背包。之所以要从大到小遍历,是为了防止物品被重复放入。 

e.g. i = 0: dp[1] = 15, dp[2] = max(dp[2] = 0, dp[2-weight[1]] + value[1] = dp[1] + value[1] = 15 + 15 = 30)。 而当从后往前遍历时, i = 0: dp[4] = 15 dp[3] = max(0, dp[2] + value[0]) = max(0, 0 + 15) = 15,是正确的。

二维数组可以从小到大遍历,是因为当前的dp[i][j]不包括当前的物品i,是从[0, i-1]中选取物品。

5. 举例推导dp数组

代码实现

objNum, bagWeight=map(int,input().split())weight= [int(i) for i in input().split()]
value = [int(i) for i in input().split()]dp = [0]*(bagWeight+1)for i in range(objNum): # 遍历物体for j in range(bagWeight, 0, -1):  #遍历背包容量if weight[i] > j:dp[j] = dp[j]else:dp[j] = max(dp[j], dp[j - weight[i]] + value[i])print(dp[bagWeight])

http://www.yayakq.cn/news/138573/

相关文章:

  • 汽车网站建设费用天眼查企业查询在线官网
  • 山西山西省建设厅网站做哪方面的网站好呢
  • 松江网站制作如何获取免费域名
  • 绵阳做手机网站做公司官网需要什么条件
  • 昆山做网站的公昆山做网站的公司司深圳网站设计九曲
  • 厦门 网站建设 闽icp衡阳做网站
  • 做金融网站拘留多久企业展厅设计网
  • 电脑什么软件可以做动漫视频网站dede笑话网站源码
  • 网站建设注意内容织梦可以放两个网站
  • 网站收录原创文章阿里云网站备份
  • 微网站开发服务网站优化一年多少钱
  • 服装代销的网站源码服务器网站怎么用
  • 网站中图片怎么做的网页设计与制作教程电子版pdf
  • 北京城建亚泰建设集团有限公司网站首页新闻大全
  • 网站根目录是什么意思制作网站需要注意什么
  • 移动app网站模板wordpress难不难
  • 网站栏目页 优化温州网站建设方案表
  • 怎么在网站中添加百度商桥国家免费职业培训平台
  • 南宁做企业网站培训班招生方案
  • 网站的关键词库怎么做的那么多品牌网站建设e小蝌蚪
  • 专题网站建设策划方案西安免费做网站多少钱
  • 可以做填字游戏的网站怎么查域名服务商
  • 怀柔重庆网站建设微信网站建设电话
  • 可以做驾校推广的网站2345网址导航官网
  • 深圳建设网站制作公司建设网站必须用dns
  • 成都企业网站建站wordpress内容构建器
  • 网站建设好多钱家具设计
  • 多媒体网站建设住房城乡建设网站查询
  • 摄影赚钱的网站云南建设厅网站资质查询
  • wordpress开发门户网站莱芜网页定制