完全背包问题总结

1.什么是完全背包问题

完全背包问题是0-1背包问题的扩展,其区别在于:

0-1背包的物品每个只有一件,不能重复使用。

完全背包问题中:每个物品有无数件,可以重复操作。

2.解决完全背包问题的一般步骤

完全背包也是动态规划的一种典型例题,所以解决完全背包问题任然是动规五部曲。

其次,按照动态规划的一般步骤

  1. 明确dp数组及下标的含义。
  2. 确定递推公式,但是递推公式只是动态规划的一部分,而非全部
  3. dp数组初始化
  4. 确定遍历顺序:从前往后?从后往前?
  5. 打印dp数组, 用于debug验证等。

3.完全背包问题的遍历顺序

完全背包的遍历顺序如何确定:

  • 对于二维dp数组来说,先背包再物体;先物体再背包;仅仅是二维数组填充的顺序不同而已,一个按列填充,一个按行填充。但是初始化时,就不同了,可以使用一个物品重复填充不同空间的背包。
  • 对于一维滚动dp数组来说,因为是滚动的行数据,所以是按行顺序填充,所以是先物品再背包。

其次注意:传统的一维dp[]数组遍历时,背包总是倒序,放置物品重复放置。

但是在完全背包问题中,不存在不能重复放置的问题,所以,这里将背包遍历改为正序遍历过程即可。

具体的步骤,可以在题目里看到。

相关推荐
林shir1 小时前
Java基础1.7-数组
java·算法
Jeremy爱编码1 小时前
leetcode课程表
算法·leetcode·职场和发展
甄心爱学习1 小时前
SVD求解最小二乘(手写推导)
线性代数·算法·svd
努力学算法的蒟蒻2 小时前
day46(12.27)——leetcode面试经典150
算法·leetcode·面试
Blockbuater_drug2 小时前
InChIKey: 分子的“化学身份证”,从哈希原理到全球监管合规(2025)
算法·哈希算法·inchikey·rdkit·分子表达·化学信息学
橙汁味的风2 小时前
2EM算法详解
人工智能·算法·机器学习
维构lbs智能定位2 小时前
北斗卫星导航定位从核心框架到定位流程详解(一)
算法·北斗卫星导航定位系统
byzh_rc2 小时前
[算法设计与分析-从入门到入土] 动态规划
算法·动态规划
Halo_tjn3 小时前
Java List集合知识点
java·开发语言·windows·算法·list
云飞云共享云桌面3 小时前
河北某机器人工厂8个研发设计共享一台SolidWorks云主机
运维·服务器·网络·数据库·算法·性能优化·机器人