对背包九讲的学习:网址 题目: 二维费用的背包问题是指:对于每件物品,具有两种不同的费用;选择这件物品必须同时付出这两种代价;对于每种代价都有一个可付出的最大值(背包容量)。问怎样选择物品可以得到最大的价值。设这两种代价分别为代价1和代价2,第i件物品所需的两种代价分别为a[i]和b[i]。两种代价 ...
分类:
其他好文 时间:
2018-11-27 21:07:50
阅读次数:
231
在N件物品取出若干件放在容量为W的背包里,每件物品的体积为W1,W2……Wn(Wi为整数),与之相对应的价值为P1,P2……Pn(Pi为整数)。求背包能够容纳的最大价值。 收起 在N件物品取出若干件放在容量为W的背包里,每件物品的体积为W1,W2……Wn(Wi为整数),与之相对应的价值为P1,P2… ...
分类:
其他好文 时间:
2018-11-26 19:58:40
阅读次数:
227
题目 有N种物品和一个容量为V的背包。第i种物品最多有n[i]件可用,每件费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。 基本思路: 对每个物品都考虑拿几个(这个很好理解) 递推式:f[i][v]=max{f[i-1][v-k*c[i]] ...
分类:
其他好文 时间:
2018-11-25 11:58:22
阅读次数:
146
1 int N = 3; 2 int V = 5; 3 int C[4] = {0,1,2,3}; 4 int W[4] = {0,60,100,120}; 5 int f[N][V]; 6 //memset(f,0,sizeof(int)*N*V); 7 for(int i=0;i (f[i-1]... ...
分类:
其他好文 时间:
2018-11-24 20:58:06
阅读次数:
167
问题描述:给定n种物品,1个背包,背包容量为c,每个物品i的价值为vi,重量为wi,如何选择装入物品能使背包的总价值最大? 注意:1)对于每个物品来说,只有两种选择,要么装,要么不装! 2)不能将物品i装入背包多次,也不能只装入部分物品! eg.c = 100 3种物品 1:v1 = 50 w1 = ...
分类:
其他好文 时间:
2018-11-24 18:02:57
阅读次数:
208
学习自:背包九讲 题目 有N种物品和一个容量为V的背包,每种物品都有无限件可用。第i种物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。 基本思路: 完全背包和01背包的区别是一个物品可以被拿无限次,我们之前01背包是拿或者不拿的max ...
分类:
其他好文 时间:
2018-11-24 14:23:56
阅读次数:
212
A.部队回收器|| 思路错误 忏悔1:助教不说是分数背包,按照01背包做了10多分钟,耽误时间 ->对判断DP和贪心的判定不好好分析 ->不能根据题目信息及时分析出这个问题到底是DP还是贪心 ->hint中说明这是分数背包 ->题目要求最后输出的结果保留三位小数,如果是背包问题,输入又都是整数,为什 ...
分类:
其他好文 时间:
2018-11-17 17:04:25
阅读次数:
145
1.01背包问题 1.朴素的二维数组解法 dp[i][j]表示前i件物品装入容量是j的背包所能获得的最大价值 状态转移方程是dp[i][j]=(1)dp[i-1][j](在第i件物品装不下的情况下) (2)max(dp[i-1][j],dp[i-1][j-w[i]]+v[i])(装的下的情况下,装和 ...
分类:
其他好文 时间:
2018-11-14 01:11:21
阅读次数:
182
子集树 当所给的问题是从n个元素的集合S中找出满足某种性质的子集时,相应的解空间称为子集树。比如,01背包问题就是子集树。这类问题通常有2^n个叶子节点,总节点个数是2^(n+1)-1。遍历子集树的任何算法都需要 O(2^n)的时间。 选取数字: 排列树 当所给问题是确定n个元素满足某种性质的排列时 ...
分类:
其他好文 时间:
2018-11-08 00:23:34
阅读次数:
260
背包问题 贪心算法 一 问题描述 二 问题分析 **三 代码实现 package knapsnap; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.u ...
分类:
其他好文 时间:
2018-11-07 14:06:28
阅读次数:
156