【问题描述】 有N种物品和一个容量为w的背包,第i种物品最多有m[i]件可用,每件容量是c[i],价值是v[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。【输入】 第一行 正整数n和w 以下n行,每行三个正整数为物品的容量、价值和件数,中间用空格隔开。【输出】最大...
分类:
其他好文 时间:
2014-06-28 10:57:02
阅读次数:
249
1 #include "iostream" 2 using namespace std; 3 4 float MAX(float m1,float m2){ 5 if(m1>=m2) 6 return m1; 7 else 8 return m2;...
分类:
其他好文 时间:
2014-06-21 16:05:31
阅读次数:
205
题目:有n种物品,每种物品都有无限件可用。第i种物品的体积是vi,重量是wi。选一些物品装到一个容量为C的背包中,使得背包内物品在总体积不超过C的前提下重量尽量大。
分析,完全背包问题,相对于上上篇文章的硬币问题,只是由DAG上的无权图变成了这里的DAG上的带权图!
输出最后满足体积不超过背包容量的条件下,背包中的最大重量。
代码:
#include
#include
using...
分类:
其他好文 时间:
2014-06-16 11:59:00
阅读次数:
221
动态规划的基本思想:将一个问题分解为子问题递归求解,且将中间结果保存以避免反复计算。通经常使用来求最优解,且最优解的局部也是最优的。求解过程产生多个决策序列,下一步总是依赖上一步的结果,自底向上的求解。动态规划算法可分解成从先到后的4个步骤:1.
描写叙述一个最优解的结构,寻找子问题,对问题进行划分...
分类:
其他好文 时间:
2014-06-10 15:00:23
阅读次数:
217
问题描述:
思路分析:
编写程序:
show you code...
分类:
其他好文 时间:
2014-06-07 02:06:34
阅读次数:
245
题目:
链接:点击打开链接
题意:
xx喜欢收集鞋子,n,m,k分别表示鞋子的总数,xx的钱和鞋子的品牌数目。然后给出每个鞋子的信息有:a,是那种品牌,b,鞋子的标价,c,收藏鞋子得到的价值。对于一个收藏家来说,每种品牌的鞋子只收集一种,求出xx能够得到的最大的收藏价值。
算法:
分组背包问题。
思路:
m总的钱数是背包...
分类:
其他好文 时间:
2014-06-04 22:55:34
阅读次数:
270
混合三种背包问题。定义:dp[i][k]表示体积为k的时候,在前i堆里拿到的最大价值。第一类,至少选一项,dp初值全赋为负无穷,这样才能保证不会出现都不选的情况。dp[i][k]
= max(dp[i][k],max(dp[i-1][k-c]+g,dp[i][k-c]))其中:dp[i][k]是不选...
分类:
其他好文 时间:
2014-06-02 20:32:13
阅读次数:
238
前言:
以上涉及的各种背包问题都是要求在背包容量(费用)的限制下求可以取到的最大价值,但背包问题还有很多种灵活的问法,在这里值得提一下。但是我认为,只要深入理解了求背包问题最大价值的方法,即使问法变化了,也是不难想出算法的。例如,求解最多可以放多少件物品或者最多可以装满多少背包的空间。这都可以根据具体问题利用前面的方程求出所有状态的值(f数组)之后得到。还有,如果要求的是“总价值...
分类:
其他好文 时间:
2014-06-01 15:32:16
阅读次数:
278