昨日同学要我帮他看一道算法,如下:是不是乍一看是“0-1背包”问题呀,我也这么想,于是就这么兴致勃勃的开始用这个想法去思考怎么算。但是算法也忘得差不多,回去赶紧补补,也趁着这次机会好好复习一下算法,于是觉得“0-1背包”问题实现了,这个问题也差不多了吧:/**********************...
分类:
其他好文 时间:
2015-10-29 21:51:59
阅读次数:
279
dp解法:令dp[i]表示容量为i的背包所能得到的最大价值,考虑在当前物品集合中加入1个新考虑的物品i,则有如下状态转移方程:dp[j] = max(dp[j], dp[j - weight[i]] + value[i])#include using namespace std;const int ...
分类:
编程语言 时间:
2015-10-29 19:57:04
阅读次数:
259
问题描述:有一个容量为c的背包,有n种物品,第i种物品的重量是wi,价值是vi;可以拿走一种物品的全部或者部分。怎样才能使背包装入的物品价值最大?分析:与0-1背包不同的是可以装入一种物品的一部分,在0-1背包只能用动态规划的方法来解,具体证明见《算法导论》,完全背包问题可以用动态规划来解也可以用贪...
分类:
其他好文 时间:
2015-10-29 00:27:43
阅读次数:
246
原文:http://www.cnblogs.com/Anker/archive/2013/05/04/3059070.html1、前言 前段时间忙着搞毕业论文,看书效率不高,导致博客一个多月没有更新了。前段时间真是有些堕落啊,混日子的感觉,很少不爽。今天开始继续看算法导论。今天继续学习动态规划和贪....
分类:
编程语言 时间:
2015-10-24 21:57:44
阅读次数:
428
需要按照B/C的值从大到小排序。#include#include#include#include#include#include#include#includeusing namespace std;typedef long long LL;const int INF = 1e9+7;const i...
分类:
其他好文 时间:
2015-10-12 17:17:35
阅读次数:
131
题目链接: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=17434动态规划: 经典的01背包问题 有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。 求解将哪些物品装入背包可使价值总和最大。 这是....
分类:
其他好文 时间:
2015-10-11 01:39:20
阅读次数:
335
一、背包问题分类: 我觉得简单的背包问题分为两类:一是01背包问题:每个物品只有拿或者不拿两种选项;另一种就是非01背包问题,每种物品的重量只要不超过背包的最大容量,可以拿任意多个。 背包问题还可以按照求最大或者最小分类; 还可以根据是否一定要充满背包分成充满和不充满;二、背包问题的一般递推:...
分类:
其他好文 时间:
2015-10-11 00:19:08
阅读次数:
256
多重背包问题: 有n件物品,第i件价值为wi,质量为vi,有c1件,问,给定容量V,求获得的最大价值。 朴素做法: 视为0,1,2,...,k种物品的分组背包 [每组只能选一个] f[i][j]=Max(f[i][j-k*v[i]]+k*w[i]) 但是i,j,k都要枚举,复杂度为 n*V...
分类:
其他好文 时间:
2015-10-02 18:40:49
阅读次数:
252
0 1 背包问题递归求满足两个条件的子集树#include#define N 3#define C 15int w[N]={10,8,5};int v[N]={5,4,1};int x[N]={0,0,0};int cur_weight = 0;int cur_value = 0;int best_...
分类:
其他好文 时间:
2015-09-30 18:03:37
阅读次数:
138
写法分类: --|递归:代码简便,耗费资源 --|迭代 :相反解空间分类: --|子集树所给的问题是从n个元素的集合S中找出满足某种性质的子集时,相应的解空间成为子集树。如0-1背包问题,从所给重量、价值不同的物品中挑选几个物品放入背包,使得在满足背包不超重的情况下,背包内物品价值最大。它的解...
分类:
其他好文 时间:
2015-09-30 18:00:40
阅读次数:
120