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

代码随想录动态规划——背包问题总结篇

动规五部曲:

  1. 确定dp数组(dp table)以及下标的含义
  2. 确定递推公式
  3. dp数组如何初始化
  4. 确定遍历顺序
  5. 举例推导dp数组

背包递推公式

问能否能装满背包(或者最多装多少):dp[j] = max(dp[j], dp[j - nums[i]] + nums[i])

  • 分割等和子集
  • 最后一块石头的重量 II

问装满背包有几种方法:dp[j] += dp[j - nums[i]]

  • 目标和
  • 零钱兑换 II
  • 组合总和 Ⅳ
  • 爬楼梯(进阶版)

问背包装满最大价值:dp[j] = max(dp[j], dp[j - weight[i]] + value[i])

  • 一和零

问装满背包所有物品的最小个数:dp[j] = min(dp[j - coins[i]] + 1, dp[j])

  • 零钱兑换
  • 完全平方数

遍历顺序

01背包:

  • 二维dp数组01背包:先遍历物品还是先遍历背包都可以,且第二层for循环是从小到大遍历
  • 一维dp数组01背包:只能先遍历物品再遍历背包容量,且第二层for循环是从大到小遍历

完全背包:

  • 纯完全背包一维dp数组:先遍历物品还是先遍历背包都是可以的,且第二层for循环是从小到大遍历
  • 求组合数:外层for循环遍历物品,内层for遍历背包
  • 求排列数:外层for遍历背包,内层for循环遍历物品

总结:背包问题最重要的两点,递推公式遍历顺序

相关文章:

  • web安全之信息收集
  • 基于FPGA的双目相机目标深度图像提取实现——详细版
  • 【饭谈】细嗦那些职场中喜欢用领导口气命令别人的同事
  • 10 通用同步异步收发器(USART)
  • AI绘图—对中文拟合度很高,值得一试
  • 【 C++11 】包装器
  • 【动手学深度学习PyTorch版】13 卷积层的填充和步幅
  • 第十三届蓝桥杯C++B组国赛H题——机房 (AC)
  • django框架技术沉淀
  • 血的教训---入侵redis并远程控制你的机器场景复现
  • 基于javaweb的养老院管理系统(java+springboot+thymeleaf+html+js+mysql)
  • 【CV】第 6 章:图像分类的实际方面
  • HazelEngine 学习记录 - Shader Asset Files
  • 网络安全—DDoS攻防
  • 【JavaWeb】之富文本编辑器
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • k8s 面向应用开发者的基础命令
  • Laravel5.4 Queues队列学习
  • ReactNativeweexDeviceOne对比
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 排序算法学习笔记
  • 三栏布局总结
  • 深入浅出webpack学习(1)--核心概念
  • 使用parted解决大于2T的磁盘分区
  • 我是如何设计 Upload 上传组件的
  • Python 之网络式编程
  • scrapy中间件源码分析及常用中间件大全
  • ​LeetCode解法汇总518. 零钱兑换 II
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • # 数据结构
  • #{}和${}的区别是什么 -- java面试
  • (02)Hive SQL编译成MapReduce任务的过程
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (八十八)VFL语言初步 - 实现布局
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (二开)Flink 修改源码拓展 SQL 语法
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (排序详解之 堆排序)
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (四)JPA - JQPL 实现增删改查
  • (算法设计与分析)第一章算法概述-习题
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)
  • (转)C#调用WebService 基础
  • (转)Mysql的优化设置
  • (转)mysql使用Navicat 导出和导入数据库
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .gitignore文件设置了忽略但不生效
  • .NET Core WebAPI中封装Swagger配置
  • .netcore 如何获取系统中所有session_ASP.NET Core如何解决分布式Session一致性问题
  • .xml 下拉列表_RecyclerView嵌套recyclerview实现二级下拉列表,包含自定义IOS对话框...
  • /etc/fstab和/etc/mtab的区别
  • @Bean, @Component, @Configuration简析