
背包问题详解
参考背包九讲,加了一些自己的思考
Anita-Sun
一只热衷于分享前端知识的奶牛猫~ ️
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
背包问题求方案数
题目描述:有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。第 i 件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出 最优选法的方案数。注意答案可能很大,请输出答案模 109+7 的结果。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 件物品的体积和价值。输出格式输出一个整数,表示 方案数 模 109+7 的结果。数原创 2020-12-02 22:28:54 · 520 阅读 · 0 评论 -
有依赖的背包问题
文章参考闫神背包九讲有依赖的背包问题题目描述有 N 个物品和一个容量是 V 的背包。物品之间具有依赖关系,且依赖关系组成一棵树的形状。如果选择一个物品,则必须选择它的父节点。如下图所示:如果选择物品5,则必须选择物品1和2。这是因为2是5的父节点,1是2的父节点。每件物品的编号是 i,体积是 vi,价值是 wi,依赖的父节点编号是 pi。物品的下标范围是 1…N。求解将哪些物品装入背包,可使物品总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行有两个整数 N,V,用空格原创 2020-11-27 11:00:50 · 1156 阅读 · 0 评论 -
二维费用的背包问题,小白也可以看懂,哦耶~
问题描述:背包的容量是V,能承受的最大的重量是M有N个物品,v, m, w数组中分别存放着每个物品的体积,重量,价值求解将哪些物品装入背包,可使物品总体积不超过背包容量,物品的总重不超过背包能承受的最大重量,且总价值最大思路分析:方案一:dp数组的含义是:背包在一定的体积和重量下,可以获得的最大价值假设现在要装第i件物品,那么dp[i - 1]储存的就是装这件物品之前的所有物品可以获得的最大价值,通过装第i件物品,实现dp[i]的更新,更新为包括第i件物品可以获得的最大价值。所以下面的代码对应原创 2020-11-24 13:30:27 · 435 阅读 · 0 评论 -
分组的背包问题,小白也可以看懂,哦耶~
问题描述:有N组物品和一个容量是V的背包每组物品有若干个,同一组内的物品最多只能选一个求解将哪些物品装入背包,可使物品总体积不超过背包容量,且总价值最大思路分析:因为每组物品只能选一个,所以问题就可以化为,将这组物品放入体积为j(0 <= j <= V)的背包public class Main { int N; //有N组物品 int V; //背包的容量为V //这两个数组分别储存物品的体积和价格 List<Integer> v原创 2020-11-24 00:02:38 · 321 阅读 · 0 评论 -
混合三种背包问题,小白也可以看懂,哦耶~
多重背包问题思路:1.如果s[i] == 0,这件物品可以使用无限次——可以转化成多重背包问题多重背包问题2.如果是s[i] == -1,这件物品只能使用一次——可以转化为0-1背包问题0-1背包3.其它情况是每个物品给了确定的个数——可以转化成完全背包问题完全背包问题public class Main { int N; //物品的种数为N int V; //背包的容量为V public int mixBag(int[] v, int[] w, int[]原创 2020-11-19 16:14:33 · 340 阅读 · 0 评论 -
多重背包问题,小白也可以看懂,哦耶~
多重背包问题问题描述有N种物品和一个容量是V的背包第i种物品最多有s件,每件体积是v,价值是w求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大———————————————————————————————————————解法一问题分析:最外层循环遍历每个商品中间的循环可以遍历背包的体积1.如果当前物品的体积大于背包的体积,说明背包装不下这个商品,那么就和装上一件物品的情况一样了,上一件物品是i - 1,所以代码是dp[i][j] = dp[i - 1][j]2原创 2020-11-19 11:14:54 · 519 阅读 · 0 评论 -
最详细完全背包问题,小白也可以看懂,哦耶~
完全背包问题问题描述完全背包是在N种物品中选取若干件(同一种物品可多次选取)放在空间为V的背包里第i种物品的体积是v,价值是w求将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大—————————————————————————————问题分析首先看上面这张图左边的黄色纵行代表的是第n件物品上面的蓝灰色横行代表的是第n件物品的体积和价值右边的绿色横行代表的是背包容量的大小—————————————————————————————分析由上一篇0-1背包可知,当前状原创 2020-11-17 09:22:51 · 1321 阅读 · 0 评论 -
最详细的0-1背包问题,小白也可以看懂,哦耶~
01背包问题问题描述有N件物品和一个容量是V的背包,每件物品只能使用一次第i件物品的体积是v[i],价值是w[i]求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大—————————————————————————————问题分析对于0-1背包问题来说,某个状态下的最优解,就是在一定的背包体积装入物品,且总价值最大。关键是总价值最大,如果想要使总价值最大,必须装入物品的体积足够小,且物品的价值大。首先看上面这张图片:左边的绿色纵行代表的是第n件物品,上面的蓝灰色横行原创 2020-11-16 10:07:16 · 1449 阅读 · 2 评论