算法萌新如何学好动态规划(3)( 五 )


因此对于第 i 类物品 , 其个数为
算法萌新如何学好动态规划(3)文章插图
, 我们可以求出满足
算法萌新如何学好动态规划(3)文章插图
的最大的 p , 并令
算法萌新如何学好动态规划(3)文章插图

因为 p 是最大的 , 所以
算法萌新如何学好动态规划(3)文章插图
, 即
算法萌新如何学好动态规划(3)文章插图
。 又因为
算法萌新如何学好动态规划(3)文章插图
的最大表示范围为
算法萌新如何学好动态规划(3)文章插图
, 因此我们可以从
算法萌新如何学好动态规划(3)文章插图
中选取若干个数表示出
算法萌新如何学好动态规划(3)文章插图
中的任何整数 。
又因为
算法萌新如何学好动态规划(3)文章插图
, 因此我们可以使用
算法萌新如何学好动态规划(3)文章插图
以及
算法萌新如何学好动态规划(3)文章插图
表示出
算法萌新如何学好动态规划(3)文章插图
中的任何整数 。
所以
算法萌新如何学好动态规划(3)文章插图

算法萌新如何学好动态规划(3)文章插图
的表示范围恰好为
算法萌新如何学好动态规划(3)文章插图
, 即我们可以将数量为
算法萌新如何学好动态规划(3)文章插图
的第 i 类物品拆分为 p + 2 个物品 , 其体积分别为:
算法萌新如何学好动态规划(3)文章插图
其价值分别为:
算法萌新如何学好动态规划(3)文章插图
拆分完每一类物品后 , 我们再使用「0/1 背包」模型即可求出答案 , 总时间复杂度为
算法萌新如何学好动态规划(3)文章插图
背包问题特点至此我们介绍完了三大常见的背包模型 , 分别是「0/1 背包」、「完全背包」、「多重背包」 , 其区别仅仅在于每一类物品可以选多少个 。 其中「0/1 背包」是每一类物品只能选一个 , 「完全背包」则是每一类物品可以选无数个 , 而「多重背包」则是第 i 类物品最多可以选
算法萌新如何学好动态规划(3)文章插图
个 。
因此我们可以归纳「背包问题」的特点:有 N 类物品 , 每类物品可以选 1 个、无数个或
算法萌新如何学好动态规划(3)文章插图


推荐阅读