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

Day34-动态规划

1. 0-1背包(二维数组)

46. 携带研究材料(第六期模拟笔试)

n, bagweight = map(int, input().split())weight = list(map(int, input().split()))
value = list(map(int, input().split()))# dp[i][j]表示的是把0-i的所有物品选几个装进重量是j的背包的最大价值
dp = [[0]*(bagweight+1) for _ in range(n)]
for j in range(weight[0],bagweight+1):dp[0][j] = value[0]
for i in range(1,n):for j in range(bagweight+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])
print(dp[n-1][bagweight])

不直观的一种写法,写了一维dp,这种自然就可以想到;但是理解性不如上一种【其实就是有一个坐标的倒换】

dp = [[0]*(bagweight+1) for _ in range(n+1)]
for i in range(1,n+1):for j in range(bagweight+1):if j<weight[i-1]:dp[i][j] = dp[i-1][j]  # 根本放不进去else:dp[i][j] = max(dp[i-1][j],dp[i-1][j-weight[i-1]]+value[i-1])
print(dp[n][bagweight])

2. 0-1背包(一维数组)

# dp[j] 表示容量为j的背包所能装的最大价值【至于可以选择哪些物品,是我们在外层进行控制的】
dp=[0]*(bagweight+1)
# 仅仅初始化为0即可,相当于只有0个物品时,每个j容量的能装的最大价值
for i in range(n):# 正着就会装多遍!倒着装!for j in range(bagweight,0,-1):if j>=weight[i]:dp[j]=max(dp[j],dp[j-weight[i]]+value[i])
print(dp[bagweight])

3. 分割等和子集-416

416. 分割等和子集 - 力扣(LeetCode)

class Solution(object):def canPartition(self, nums):""":type nums: List[int]:rtype: bool"""# 其实就是求和nums的一半# 重量和value其实是一个!if sum(nums)%2:return Falsetarget = sum(nums)//2dp = [0 for _ in range(target+1)]for i in range(len(nums)):for j in range(target,nums[i]-1,-1):dp[j] = max(dp[j],dp[j-nums[i]]+nums[i])# dp[target]重量已经填充到target了,但是值还没有达到targetreturn dp[target]==target   

http://www.dtcms.com/a/601840.html

相关文章:

  • 衡水网站建设知识做甜品网站的需求分析
  • 千兆网口NET8506与NET8516系列高速数字化仪,为高动态范围信号采集提供了全面的解决方案
  • 小程序开通aso优化分析
  • 拉取github更新到本地
  • wordpress站点搭建怎么做多语言网站
  • 提交异步任务后,无法查询数据库数据问题
  • Redis核心使用场景
  • 普中51单片机学习笔记-按键
  • 学校网站网页建设开题报告书建设网站设计的公司
  • 学习笔记:利用JQuery直接调用asp.net后台方法
  • STM32时钟源分析
  • 文件上传之基础过滤方式
  • Explain 执行计划详解:SQL 性能瓶颈与索引命中分析
  • 汕头网址模板建站广西明电建设有限公司网站
  • 新增目录在vscode git中不可见但git status可见的问题
  • 网站备案信息更改审核要多久智能产品创新设计
  • 大模型加速的其他方法简记
  • Linux C语言编译器的使用与调试技巧
  • [c++]宏函数与内联函数
  • 广州网站定做西安网站开发服务费用
  • 桂林网站建设招聘制作公司网站怎么做
  • 电脑CPU温度多少算正常?温度过高的原因分析
  • 广安住房和城乡建设厅网站10分钟免费建网站
  • 系统监控“可视化“实战:3步搭建企业级监控面板
  • 株洲网站建设优度外贸培训
  • 使用DelayQueue 分布式延时队列,干掉定时任务!
  • 外贸网站开发多少钱汕头百度seo电话
  • C语言反编译技术分析 | 探讨其实现原理与应用场景
  • C语言经过编译后 | 了解编译过程对程序执行的影响
  • 哈尔滨h5模板建站比较开放的浏览器