POJ3624(背包问题)
1、题目链接地址
http://poj.org/problem?id=3624
2、源代码
#include<iostream>
using namespace std;
#define MAXN 3403 //物品的最大数量
#define MAXM 12881 //重量的上限 int max(int x, int y)
{
if (x > y) return x;
else return y;
} int main()
{
int n, m; //n:个数,m:不能超过的重量
while(cin >> n >> m && n && m)
{
int i, v;
int w[MAXN] = {}; //重量
int d[MAXN] = {}; //需要程度
int dp[MAXM] = {};
for (i = ; i <= n; i++)
cin >> w[i] >> d[i];
for (i = ; i <= n; i++)//重点位置
{
for (v = m; v >= w[i]; v--)
dp[v] = max(dp[v], dp[v - w[i]] + d[i]);
}
cout << dp[m] << endl;
}
return ;
}
3、分析
这个题的背包的承重量为m,物品的个数为n,物品的重量w[],物品的需要程度d[],dp[]辅助数组.
以上面的数据为例
4 6 //物品的个数为4, 背包的称重量为6
1 4 //重量为1,需要程度4
2 6 //重量为2,需要程度6
3 12 //重量为3,需要程度12
2 7 //重量为2,需要程度7
对于第一物品的作出决定的时候
i = 1, v = 6, dp[6] = max(dp[6], dp[5] + d[1]) = max(0, 0 + 4) = 4;
i = 1, v = 5, dp[5] = max(dp[5], dp[5 - w[1] + d[1]) = max(0,dp[4] +4) = 4;
一直算,有如下的结果:
|
i\v |
1 |
2 |
3 |
4 |
5 |
6 |
|
1 |
4 |
4 |
4 |
4 |
4 |
4 |
|
2 |
4 |
6 |
10 |
10 |
10 |
10 |
|
3 |
4 |
6 |
12 |
16 |
18 |
22 |
|
4 |
4 |
7 |
12 |
16 |
19 |
23 |
POJ3624(背包问题)的更多相关文章
- poj3624背包问题(一维数组)
Description Bessie has gone to the mall's jewelry store and spies a charm bracelet. Of course, she'd ...
- 01背包问题:POJ3624
背包问题是动态规划中的经典问题,而01背包问题是最基本的背包问题,也是最需要深刻理解的,否则何谈复杂的背包问题. POJ3624是一道纯粹的01背包问题,在此,加入新的要求:输出放入物品的方案. 我们 ...
- 动态规划入门-01背包问题 - poj3624
2017-08-12 18:50:13 writer:pprp 对于最基础的动态规划01背包问题,都花了我好长时间去理解: poj3624是一个最基本的01背包问题: 题意:给你N个物品,给你一个容量 ...
- poj3624 简单的01背包问题
问题描述: 总共有N种宝石供挑选,宝石i的重量为Wi,吸引力为Di,只可以用一次.Bessie最多可负担的宝石手镯总重量为M.给出N,M,Wi,Di,求M. 非常标准的01背包问题.使用了优化的一维数 ...
- [转]POJ3624 Charm Bracelet(典型01背包问题)
来源:https://www.cnblogs.com/jinglecjy/p/5674796.html 题目链接:http://bailian.openjudge.cn/practice/4131/ ...
- DSY3163*Eden的新背包问题
Description "寄没有地址的信,这样的情绪有种距离,你放着谁的歌曲,是怎样的心心静,能不能说给我听."失忆的Eden总想努力地回忆起过去,然而总是只能清晰地记得那种思念的 ...
- 使用adagio包解决背包问题
背包问题(Knapsack problem) 背包问题(Knapsack problem)是一种组合优化的多项式复杂程度的非确定性问题(NP问题).问题可以描述为:给定一组物品,每种物品都有自己的重量 ...
- bzoj 3163: [Heoi2013]Eden的新背包问题
Description "寄没有地址的信,这样的情绪有种距离,你放着谁的歌曲,是怎样的心心静,能不能说给我听."失忆的Eden总想努力地回忆起过去,然而总是只能清晰地记得那种思念的 ...
- nyoj 106背包问题(贪心专题)
背包问题 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 现在有很多物品(它们是可以分割的),我们知道它们每个物品的单位重量的价值v和重量w(1<=v,w< ...
随机推荐
- [JS学习笔记]Event对象
写在前面 学习和总结JS时会伴随性的生成一些dome,其中包含一些动态输出的结果和标注. 之前通过鸡贼的办法实现了在博客中执行JS,但很多时候需要一张干净的页面编写dome,所以尝试通过一些在线的JS ...
- Flask的请求与响应
Flask的请求与响应 1 请求相关信息 request.method # 请求方法 request.args # get 请求的参数 request.form # post请求的参数 request ...
- 《锋利的jQuery》读书笔记(DOM+事件)
前阵子买了一批书,就从锋利的jQuery看起吧,书中一些太过常规以及没有强记必要性的操作就不记录了. 1.DOM加载后执行JS $(document).ready(function(){ //.... ...
- Electron 使用 Webpack2 预编译 Electron 和 Browser targets
Electron 使用 Webpack2 预编译 Electron 和 Browser targets 前一篇文章说了说怎样使用 Webpack2 预编译 Electron 应用,但是有时候我们希望使 ...
- ng 自定义服务
服务的本质是对象. 创建服务的常见方式:factory(返回对象) service (方法.属性)constant(常量服务) value(变量服务) 1.factoryapp.factory('服务 ...
- windows获取屏幕显示比例 读取注册表法
static int GetDesktopScale() { ; HINSTANCE hUser32 = LoadLibrary(L"user32.dll"); if (hUser ...
- HTTP浅析
引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1. ...
- 简述Java面向对象三大特征:封装、继承、多态
封装: 把对象的全部属性和服务结合在一起,形成不可分割的独立单位: 尽可能隐藏内部细节.(数据隐藏.隐藏具体实现的细节) public.private.protected.default pu ...
- POJ1160 Post Office (四边形不等式优化DP)
There is a straight highway with villages alongside the highway. The highway is represented as an in ...
- JS 隔行变色
<script type="text/javascript"> window.onload=function(){ var oUl= ...