0-1背包问题
Posted yangbocsu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了0-1背包问题相关的知识,希望对你有一定的参考价值。
0-1背包问题
一、题目
有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。
第 i 件物品的体积是 vi,价值是 wi。
求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。
输出最大价值。
二、参考代码
基本思路
这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。
用子问题定义状态:即 d[ i ] [ j ]表示前i 件物品恰放入一个容量为j 的背包可以获得的最大价值(这里原文中使用了“恰”,但实际并不需要正好装满,在初始化可以区分开这两种情况)。
2.1 二维dp
- 将前 i 件物品放入容量为 j 的背包中 这个子问题;
- 若只考虑第 i 件物品的策略(放或不放),那么就可以转化为一个只牵扯前 i − 1 件物品的问题。
时间复杂
以上是关于0-1背包问题的主要内容,如果未能解决你的问题,请参考以下文章