【算法】动态规划 - 背包问题总结(二)

本文介绍了背包问题中的完全背包问题,包括其与01背包的区别,状态转移方程的推导,以及原始和优化后的代码实现。作者还提到了自己在忙碌生活中坚持写作博客的经历。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述

上一篇博客讲到了背包问题中的01背包问题,今天这篇博客继续介绍背包问题中的完全背包问题。
首先回顾一下背包问题,背包问题解决的是:一共有N件物品,有一个容积为V的背包,第i个物品有两个属性:体积v[i]和价值w[i],在背包能装下的前提下,能装的物品最大价值是多少。

完全背包

完全背包问题的关键是,每个物品有无限个

状态转移方程

根据上次求解01背包的思路,求解完全背包也需要分成两个部分,分别是状态表示和状态计算。
所有背包问题的二维状态表示都和01背包问题一样:用f[i, j]表示所有只考虑前i个物品,且总体积不大于j的所有选法。以下的多重背包,和分组背包问题的状态表示将不再赘述。
而完全背包问题的状态计算也可以参考01背包问题。01背包问题是将状态分成了两份,分别是不含i含i的部分。因此01背包问题的状态转移方程为:f[i, j] = Max(f[i - 1, j], f[i-1, j-vi]+wi)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值