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背包问题的主要内容,如果未能解决你的问题,请参考以下文章

0-1背包问题(JAVA版)

0-1 背包问题

0-1背包问题

0-1背包问题

0-1背包问题

背包问题