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

01背包问题:详细解释为什么重量维度必须从大到小遍历。

01背包

问题描述

题目链接:https://www.lanqiao.cn/problems/1174/learning/?page=1&first_category_id=1&problem_id=1174
在这里插入图片描述
特点:每件物品只能拿或者不拿。

解法1

设置状态:dp[i][j]指的是前i件物品重量为j的最大价值。
第i件物品,可以有两种状态:
拿: dp[i][j] = dp[i-1][j-wi] + v[i] 保证这件物品能放下:j≥wi
不拿:dp[i][j] = dp[i-1][j]
取上面两者的最大值。
代码:

n, W = map(int, input().split())
w = [0] * (n+1)
v = [0] * (n+1)
# 输入数据
for i in range(n):
    w[i+1], v[i+1] = map(int, input().split())
# 创建状态
dp = [[0] * (W+1) for _ in range(n+1)]
for i in range(1, n+1):
    for j 
http://www.dtcms.com/a/111767.html

相关文章:

  • SignalR给特定User发送消息
  • Spring event 和 MQ的区别及应用场景
  • 《Linux内存管理:实验驱动的深度探索》【附录】【实验环境搭建 4】【Qemu 如何模拟numa架构】
  • Nginx-日志配置
  • 【家政平台开发(14)】家政平台PC前端(Element plus)开发指南:从集成到组件应用
  • 【备考高项】附录:商标法(2013年修正 73条全)
  • QEMU源码全解析 —— 块设备虚拟化(14)
  • 深度学习处理文本(10)
  • 解决GraalVM Native Maven Plugin错误:JAVA_HOME未指向GraalVM Distribution
  • 【家政平台开发(15)】解锁Spring Boot:家政平台后端开发全攻略
  • 深度学习处理文本(12)
  • Linux的 /etc/sysctl.conf 笔记250404
  • AI大模型:(二)1.3 linux本地部署通义万相2.1+deepseek视频生成
  • ARM Cortex-A7 处理器支持的汇编指令集全面总结
  • 【Cursor】打开Vscode设置
  • 【nacos安装指南】
  • 关于termux运行pc交叉编译的aarch64 elf的问题
  • Leetcode hot100(day 5)
  • 【学Rust写CAD】30 Alpha256结构体补充方法(alpha256.rs)
  • 人工智能在前端开发中的应用探索
  • php8 ?-> nullsafe 操作符 使用教程
  • YOLO目标检测系列
  • 指令补充+样式绑定+计算属性+监听器
  • 鸿蒙 —— 系统图标大全
  • NLP高频面试题(三十六)——深入理解思维链(Chain-of-Thought)提示方法
  • Obsidian按下三个横线不能出现文档属性
  • 鸿蒙 —— 关系型数据库
  • 本节课课堂总结
  • Linux系统编程:进程管理、内存对比与树莓派应用
  • 【AI学习】MCP的简单快速理解