P01: 01背包问题 题目 有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。 基本思路 这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。 用子问题定义状态:即f[i][v]表示 ...
分类:
其他好文 时间:
2019-03-14 19:59:16
阅读次数:
146
开始 每次用到背包问题就忘,今天特意把背包问题写下来,本篇只写01背包问题,至于其它的背包问题以后会陆续出现,大多数背包问题都是以01背包为原型来演变过来的,所以先介绍经典的01背包问题。 01背包问题是动态规划的典型例题,0 1顾名思义就是一个物品有两种情况,拿或者不拿,每种物品有且仅有一件,用子 ...
分类:
其他好文 时间:
2019-03-14 16:32:17
阅读次数:
175
1 初始化的细节问题 我们看到的求最优解的背包问题题目中,事实上有两种不太相同的问法。有的题目要求“恰好装满背包”时的最优解,有的题目则并没有要求必须把背包装满。一种区别这两种问法的实现方法是在初始化的时候有所不同。 如果是第一种问法,要求恰好装满背包,那么在初始化时除了f[0]为0其它f[1..V ...
分类:
其他好文 时间:
2019-03-10 17:55:47
阅读次数:
174
背模板吧>> 01背包问题: 无优化 一维数组优化: 更进一步的常数优化: 完全背包问题: 多重背包问题: 行吧 water lift ...
分类:
其他好文 时间:
2019-03-09 20:28:06
阅读次数:
184
附上原文地址:http://www.cnblogs.com/sdjl/articles/1274312.html 第一节 初识动态规划 经典的01背包问题是这样的: 有一个包和n个物品,包的容量为m,每个物品都有各自的体积和价值,问当从这n个物品中选择多个物品放在包里而物品体积总数不超过包的容量m时 ...
分类:
其他好文 时间:
2019-03-08 16:27:36
阅读次数:
151
我在之前讲过0-1背包和完全背包,这里讲多重背包。不同于0-1背包和完全背包,多重背包中每个物品有个给定的数量。假定背包容量为m,有n个物品,每个物品的重量为weight[i], 价值为value[i], 数目为num[i]. 显然,多重背包可以转化为0-1背包问题:将num[i]个物品i看作是nu ...
分类:
其他好文 时间:
2019-03-05 09:43:24
阅读次数:
189
完美背包问题的模型如下: 给定N个物品,其中第i种物品的体积为Vi,价值为Wi,并且有无数个。有一个容积为M的背包,要求选择若干个物品放入背包,使得物品总体积不超过M的前提下,物品的价值总和最大。 我们可以像我们之前讨论0/1背包一样的考虑传统的二维dp方法https://www.cnblogs.c ...
分类:
其他好文 时间:
2019-02-16 15:39:37
阅读次数:
169
参考《挑战程序设计竞赛》p51 01背包问题 问题描述:有n个重量和价值分别为wi、vi的物品,从这些物品中挑选出总重量不超过W的物品,求所有挑选方案中价值总和的最大值。 input: 45 2 3 1 2 3 4 2 2 output: 7(选择第0、1、 3号物品) 朴素解法: c++版: Ja ...
分类:
其他好文 时间:
2019-02-13 12:29:20
阅读次数:
187
题目一: 最优装载问题,给出n个物体,第i个物体重量为wi。选择尽量多的物体,使得总重量不超过C。 经过前面的学习很容易想到贪心策略,那就是每次选重量最轻的物体,那么物体数就最多。 代码: 题目二: 部分背包问题,有n个物体,第i个物体的重量为wi,价值为vi。在总重量不超过C的情况下让总价值尽量高 ...
分类:
编程语言 时间:
2019-02-12 18:32:15
阅读次数:
201
01背包 问题描述 有n个重量(费用)和价值分别为wi,vi的物品。从这些物品中挑选出总重量(费用)不超过W的物品,求所有挑选方案中价值总和的最大值。 例子 n=4 (w,v)={(2,3),(1,2),(3,4),(2,2)} W=5 输出:7 1 二维数组版:时间复杂度O(nW) ,空间复杂度O ...
分类:
其他好文 时间:
2019-02-10 00:20:13
阅读次数:
161