一、简单的0,1背包问题
1、题目描述:有n个重量和价值分别为Wi,Vi的物品。从这些物品中挑选出总重量不超过W的物品,求所选方案中价值总和的最大值(注:在0,1背包问题中,每个物品只有一件,可以选择房或者不放)。
【分析】:对于这样的问题,首先我们可以用最简单容易想到的方法,将所有可能一一例举出来,找到最合适的。
对于函数rec(int i,int j)// 这里的 i 表...
分类:
其他好文 时间:
2014-08-13 19:06:47
阅读次数:
151
01背包问题,增加一个额外条件,余额大于等于5的时候,可以购买任意价格的东西,那么就把5保留下来买最大价格的物品。
然后转化为收益的时候要注意初始条件,即没买东西的时候收益就是余额,就是所有的钱。这个还是有点难转换思维的。
最后是要熟悉背包填表,不需要保留选择的时候,就逆向填表,只需要一维表就可以了,当然也可以使用滚动数组,两个一维数组就可以了。
走了算法一圈回来了,AC自动机,线段树等都学...
分类:
其他好文 时间:
2014-08-13 10:34:46
阅读次数:
218
二维费用的背包问题是指:对于每件物品,具有两种不同的费用;选择这件物品必须同时付出这两种代价;对于每种代价都有 一个可付出的最大值(背包容量)。问怎样选择物品可以得到最大的价值。设这两种代价分别为代价1和代价2,第i件物品所需的两种代价分别为a[i]和 b[i]。两种代价可付出的最大值(两种背包容量...
分类:
其他好文 时间:
2014-08-12 22:00:14
阅读次数:
308
// 0-1背包问题的普通递归算法#include #define M 10int w[M]={5,3,2,1},v[M]={4,4,3,1};int limit_w=7,maxv=0,n=4; void find(int i,int tw,int tv) //从第i种物品开始,当前已有的...
分类:
其他好文 时间:
2014-08-12 21:24:54
阅读次数:
173
多重背包:基本思路: 先来看一个引例:有N种物品和一个容量为V的背包。第i种物品最多有n[i]件可用,每件费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。这种类型的背包问题的特点是:每件物品的件数有限。 和完全背包问题很类似。基本的方程只....
分类:
其他好文 时间:
2014-08-12 18:03:14
阅读次数:
156
背包问题
时间限制:3000 ms | 内存限制:65535 KB
难度:3
描述 现在有很多物品(它们是可以分割的),我们知道它们每个物品的单位重量的价值v和重量w(1<=v,w<=10);如果给你一个背包它能容纳的重量为m(10<=m<=20),你所要做的就是把物品装到背包里,使背包里的物品的价值总和最大。
输入第一行输入一个正整数n(1
随后有n测试数据,每组测试数据的第一...
分类:
其他好文 时间:
2014-08-10 21:37:10
阅读次数:
229
1.POJ 3624最简单的0-1背包问题,这里需要反向不断更新一维数组,防止超内存 1 #include 2 #include 3 #include 4 using namespace std; 5 #define N 3500 6 #define M 13000 7 int w[N],v[...
分类:
其他好文 时间:
2014-08-10 18:31:00
阅读次数:
149
今天抓的四道DP做完了==三道是用背包做的,突然想起来背包知识点总结还没做~反正时间还早。。把01背包和完全背包小结了吧~~福利来啦~~噶呜~01背包:基本思路: 01背包问题是最广为人知的动态规划问题之一,介绍01背包之前,先来看一个引例: 有N件物品和一个容量为V的背包。第i件物品的体积是c.....
分类:
其他好文 时间:
2014-08-10 18:01:10
阅读次数:
201
题意 给你n种面额不同的金币和每种金币的个数 求这些金币能组合成的面额在m内有多少种
还是明显的背包问题 d[i]表示这些金币在i内能组合成的最大面额 初始化d为负无穷 d[0]=0 这样就可以保证d[i]恰好为i时才能为正值
原因可以自己想想 然后就用背包背吧 直接多重背包也可以过 但是分成多重背包和完全背包要快一点...
分类:
其他好文 时间:
2014-08-10 15:47:20
阅读次数:
206
题目链接:
poj3211 hdu1171
这个题目比1711难处理的是字符串如何处理,所以我们要想办法,自然而然就要想到用结构体存储,所以最后将所有的衣服分组,然后将每组时间减半,看最多能装多少,最后求最大值,那么就很愉快的转化成了一个01背包问题了。。。。
hdu1711是说两个得到的价值要尽可能的相等,所以还是把所有的价值分为两半,最后01背包,那么这个问题就得到了解决。。
...
分类:
其他好文 时间:
2014-08-10 15:41:40
阅读次数:
298