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

力扣 —— 动态规划(背包问题)

背包问题

01背包

注:01背包里物品只有一个

物品为:

重量价值
物品012
物品124
物品234
物品345

问背包能背的物品最大价值是多少?

首先确定dp数组以及下标的含义:dp[i][j] 表示从下标为[0-i]的物品里任意取,放进容量为j的背包,价值总和最大是多少

然后确定递推公式:

明确有哪些方向可以推导出 dp[i][j]

放物品i & 不放物品i

  • 不放物品i:背包容量为j,里面不放物品i的最大价值是dp[i - 1][j]。

  • 放物品i:背包空出物品i的容量后,背包容量为j - weight[i],dp[i - 1][j - weight[i]] 为背包容量为j - weight[i]且不放物品i的最大价值,那么dp[i - 1][j - weight[i]] + value[i] (物品i的价值),就是背包放物品i得到的最大价值

递归公式: dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - weight[i]] + value[i]);

最后dp数组如何初始化:

 

import xbot
from xbot import print, sleep
from .import package
from .package import variables as glvdef main(args):n, bagweight = 4, 5  # 示例输入:4个物品,背包容量为5weight = [1, 2, 3, 4]  # 每个物品的重量value = [2, 4, 4, 5]   # 每个物品的价值dp = [[0] * (bagweight+1) for j in range(n)]# print(dp)# 初始化动态规划表# for(int i=0 ; i <= bagweight ; i++){#     dp[i][0] = 0;# }# for(int j=weight[0] ; j<=bagweight ; j++){#     dp[0][j]=value[0]# }for i in range(n):dp[i][0]=0for 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]:# 背包重量达不到物品i的重量,不放物品idp[i][j] = dp[i-1][j]else:# 能达到放物品i的重量# 分别是放物品i 和 不放物品i,我们要取最大值# 背包空出物品i的容量后,背包容量为j - weight[i]dp[i][j] = max(dp[i-1][j],dp[i-1][j-weight[i]]+value[i])# 输出结果print("最大价值:", dp[n - 1][bagweight])

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

相关文章:

  • 基础微网站开发代理商wordpress图文模板
  • bind,apply,call
  • 最新ECCV最新大感受野的小波卷积
  • 小迪web自用笔记59
  • Docker 容器核心知识总结
  • GIS+VR地理信息虚拟现实XR MR AR
  • K8s学习笔记(十四) DaemonSet
  • 视频网站建设应该注意什么北京建设网点地址查询
  • 面试技术栈 —— 简历篇
  • Python闭包内变量访问详解:从原理到高级实践
  • DNS隧道技术:隐秘通信的“毛细血管”通道
  • MySQL 性能监控与安全管理完全指南
  • 【Linux】进程控制(上)
  • 湖北省建设网站wordpress商务套餐
  • 网站建设推广的软文邢台建站企业邮箱
  • C++11并发支持库
  • 广东省省考备考(第一百一十八天10.8)——言语、资料分析、数量关系(强化训练)
  • 临沂网站制作页面如何查一个网站有没有做外链
  • 基于websocket的多用户网页五子棋(八)
  • Elastic 被评为 IDC MarketScape《2025 年全球扩展检测与响应软件供应商评估》中的领导者
  • 如何利用Python呼叫nexxim.exe执行电路模拟
  • APM学习(3):ArduPilot飞行模式
  • h5制作开发价目表常用seo站长工具
  • 忻州建设公司网站他达那非副作用太强了
  • pytest详细教程
  • 订单超时方案的选择
  • Redis 集群故障转移
  • 虚拟专用网络
  • 网站制作公司网站建设网站膳食管理东莞网站建设
  • Linux小课堂: 从零到上手的指南