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

动态规划算法--01背包问题详细讲解步骤

举个例子

要确定哪些物品被放入背包以达到最大价值,可以在计算 dp 数组的同时记录选择的物品。具体来说,可以使用一个额外的数组来记录每个状态的选择情况。以下是一个详细的步骤和代码实现:
在这里插入图片描述
在这里插入图片描述

n = 3
W = 5
weights = [2, 1, 3]
values = [6, 3, 5]

初始化 dp 和 choice 数组

dp = [[0] * (W + 1) for _ in range(n + 1)]
choice = [[0] * (W + 1) for _ in range(n + 1)]print("初始状态:")
print("dp:")
for row in dp:print(row)
print("choice:")
for row in choice:print(row)

初始状态:
在这里插入图片描述

第1个物品(重量2,价值6)

# 第1个物品
for j in range(1, W + 1):if j >= weights[0]:if dp[0][j] < dp[0][j - weights[0]] + values[0]:dp[1][j] = dp[0][j - weights[0]] + values[0]choice[1][j] = 1else:dp[1][j] = dp[0][j]else:dp[1][j] = dp[0][j]print("处理第1个物品后:")
print("dp:")
for row in dp:print(row)
print("choice:")
for row in choice:print(row)

在这里插入图片描述

第2个物品(重量1,价值3)

# 第2个物品
for j in range(1, W + 1):if j >= weights[1]:if dp[1][j] < dp[1][j - weights[1

http://www.mrgr.cn/news/77886.html

相关文章:

  • Metasploit模块具体有哪些?
  • 如何创建一个项目用于研究element-plus的原理
  • 嵌入式C语言面试题 - 2024/11/18
  • 细说Rust特征(trait)用法
  • 解决登录Google账号遇到手机上Google账号无法验证的问题
  • 【英特尔IA-32架构软件开发者开发手册第3卷:系统编程指南】2001年版翻译,2-32
  • 【排序算法 python实现】
  • 【大数据分析机器学习】分布式机器学习
  • C++ For Hot100
  • 机器学习周志华学习笔记-第6章<支持向量机>
  • 【C语言】连接陷阱探秘(3):形参、实参与返回值
  • flux的权重版本
  • Ubuntu下安装Qt
  • 【C++知识总结1】c++第一篇,简单了解一下命名空间是什么
  • Linux: C语言解析域名
  • 使用猴子补丁对pytorch的分布式接口进行插桩
  • 鸿蒙进阶篇-状态管理之@Prop@Link
  • 机器学习周志华学习笔记-第4章<决策树>
  • Android Framework WMS面试题及参考答案
  • YOLOv11融合[NeurlS2022]递归门控卷积gnconv模块及相关改进思路
  • 深度优先搜索(dfs)题目合集
  • (长期更新)《零基础入门 ArcGIS(ArcMap) 》实验一(下)----空间数据的编辑与处理(超超超详细!!!)
  • Python 爬虫 (1)基础 | 基础操作
  • 「Mac玩转仓颉内测版30」基础篇10 - 区间类型详解
  • springboot配置https,并使用wss
  • logback动态获取nacos配置