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
作为一个超级小白,最近开始寻找互联网公司的就业机会,可是无奈代码关难过。于是最近开始刷LeetCode上的习题。 这道题其实可以转换为典型的动态规划01背包问题。它的描述如下: You are given a list of non-negative integers, a1, a2, ..., a ...
分类:
其他好文 时间:
2018-11-06 11:21:08
阅读次数:
149
【问题描述】 给定n个物品,每个物品可以不选或选一个,第i个物品的价格为ci,价值为vi,出现时间为ti。有m个询问,每次询问在出现时间不超过Ti的所有物品中选若干件,总花费不超过Mi的情况下,被选择物品的价值和的最大值是多少。 【输入格式】 第一行输入n,m。 接下来n行每行3个整数表示ci,vi ...
分类:
其他好文 时间:
2018-11-05 22:24:46
阅读次数:
165
原创 给定n种物品和一个背包。物品i的重量是Wi,其价值为Vi,背包的容量为C。应如何选择装入背包的物品, 使得装入背包中物品的总价值最大?物品时可以拆分的,比如可以将物品的三分之一放入背包。 使用优先放入【价值/重量】最大的物品的贪心策略解题。 23:21:16 2018-11-02 ...
分类:
其他好文 时间:
2018-11-03 01:55:51
阅读次数:
120