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(背包问题)的更多相关文章

  1. poj3624背包问题(一维数组)

    Description Bessie has gone to the mall's jewelry store and spies a charm bracelet. Of course, she'd ...

  2. 01背包问题:POJ3624

    背包问题是动态规划中的经典问题,而01背包问题是最基本的背包问题,也是最需要深刻理解的,否则何谈复杂的背包问题. POJ3624是一道纯粹的01背包问题,在此,加入新的要求:输出放入物品的方案. 我们 ...

  3. 动态规划入门-01背包问题 - poj3624

    2017-08-12 18:50:13 writer:pprp 对于最基础的动态规划01背包问题,都花了我好长时间去理解: poj3624是一个最基本的01背包问题: 题意:给你N个物品,给你一个容量 ...

  4. poj3624 简单的01背包问题

    问题描述: 总共有N种宝石供挑选,宝石i的重量为Wi,吸引力为Di,只可以用一次.Bessie最多可负担的宝石手镯总重量为M.给出N,M,Wi,Di,求M. 非常标准的01背包问题.使用了优化的一维数 ...

  5. [转]POJ3624 Charm Bracelet(典型01背包问题)

    来源:https://www.cnblogs.com/jinglecjy/p/5674796.html 题目链接:http://bailian.openjudge.cn/practice/4131/ ...

  6. DSY3163*Eden的新背包问题

    Description "寄没有地址的信,这样的情绪有种距离,你放着谁的歌曲,是怎样的心心静,能不能说给我听."失忆的Eden总想努力地回忆起过去,然而总是只能清晰地记得那种思念的 ...

  7. 使用adagio包解决背包问题

    背包问题(Knapsack problem) 背包问题(Knapsack problem)是一种组合优化的多项式复杂程度的非确定性问题(NP问题).问题可以描述为:给定一组物品,每种物品都有自己的重量 ...

  8. bzoj 3163: [Heoi2013]Eden的新背包问题

    Description "寄没有地址的信,这样的情绪有种距离,你放着谁的歌曲,是怎样的心心静,能不能说给我听."失忆的Eden总想努力地回忆起过去,然而总是只能清晰地记得那种思念的 ...

  9. nyoj 106背包问题(贪心专题)

    背包问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 现在有很多物品(它们是可以分割的),我们知道它们每个物品的单位重量的价值v和重量w(1<=v,w< ...

随机推荐

  1. L131

    Fake, Low Quality Drugs Come at High CostAbout one in eight essential medicines in low- and middle-i ...

  2. L129

    Iraq Sees Spike in Water-Borne IllnessesIraqi health officials say that a health crisis stemming fro ...

  3. python 魔法方法补充(__setattr__,__getattr__,__getattribute__)

    python 魔法方法补充 1 getattribute (print(ob.name) -- obj.func())当访问对象的属性或者是方法的时候触发 class F(object): def _ ...

  4. spring import jar中的bean配置文件

    在spring中import resource file,有两种情况:classes目录和jar包 如果资源文件在classes目录: <import resource="classp ...

  5. 机器学习算法实现解析——libFM之libFM的训练过程之SGD的方法

    本节主要介绍的是libFM源码分析的第五部分之一--libFM的训练过程之SGD的方法. 5.1.基于梯度的模型训练方法 在libFM中,提供了两大类的模型训练方法,一类是基于梯度的训练方法,另一类是 ...

  6. Leetcode 1006. Clumsy Factorial

    class Solution(object): def clumsy(self, N): """ :type N: int :rtype: int "" ...

  7. 请求URL中有body怎么使用jmeter进行接口测试

    业务场景: 微信内免费领取激活码 1.点击“免费领取”按钮调取的接口 2.URL如下 https://yxyapi2.drcuiyutao.com/yxy-api-gateway/api/json/v ...

  8. uboot Makefile 文件源码分析

    Makefile 是一个神奇的文件 详情参考uboot配置和编译过程详解

  9. ranch实现游戏服务器

    在 erlang游戏开发tcp 我们建立起了自己的socket tcp 服务器的基本骨架.当时面对并发情况下,多人同一时刻连接服务器的时候,我们的基本骨架 还是难以应付处理.这就使我不得不想对这样的情 ...

  10. 【Android】Android 学习记录贴

    官网 教程学习笔记 Genymotion 安卓虚拟器太慢,用Genymotion(装载eclipse的插件) 利用Genymotion运行Android应用程序 1.首先,点击 来启动或者创建您要使用 ...