完全背包问题总结

1.什么是完全背包问题

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

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

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

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

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

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

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

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

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

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

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

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

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

相关推荐
佑白雪乐13 分钟前
<ACM进度212题>[2026-3-1,2026-3-26]
算法·leetcode
穿条秋裤到处跑16 分钟前
每日一道leetcode(2026.03.26):等和矩阵分割 II
算法·leetcode·矩阵
平凡灵感码头20 分钟前
C语言 printf 数据打印格式速查表
c语言·开发语言·算法
哔哔龙26 分钟前
Android OpenCV 实战:图片轮廓提取与重叠轮廓合并处理
android·算法
hz_zhangrl28 分钟前
CCF-GESP 等级考试 2026年3月认证C++三级真题解析
c++·算法·程序设计·gesp·gesp2026年3月·gesp c++三级
x_xbx32 分钟前
LeetCode:1. 两数之和
数据结构·算法·leetcode
x_xbx35 分钟前
LeetCode:49. 字母异位词分组
算法·leetcode·职场和发展
玲娜贝儿--努力学习买大鸡腿版1 小时前
hot 100 刷题记录(1)
数据结构·python·算法
123过去1 小时前
pixiewps使用教程
linux·网络·测试工具·算法·哈希算法
深圳市快瞳科技有限公司1 小时前
低空经济下,鸟类识别算法与无人机硬件的兼容性优化策略
算法·无人机