POJ 3624 Charm Bracelet(01背包问题)
来源:互联网 发布:002174游族网络 编辑:程序博客网 时间:2024/06/05 05:49
Description
Bessie has gone to the mall's jewelry store and spies a charm bracelet. Of course, she'd like to fill it with the best charms possible from the N (1 ≤ N ≤ 3,402) available charms. Each charm i in the supplied list has a weight Wi (1 ≤ Wi ≤ 400), a 'desirability' factor Di (1 ≤ Di ≤ 100), and can be used at most once. Bessie can only support a charm bracelet whose weight is no more than M (1 ≤ M ≤ 12,880).
Given that weight limit as a constraint and a list of the charms with their weights and desirability rating, deduce the maximum possible sum of ratings.
Input
* Line 1: Two space-separated integers: N and M
* Lines 2..N+1: Line i+1 describes charm i with two space-separated integers: Wi and Di
Output
* Line 1: A single integer that is the greatest sum of charm desirabilities that can be achieved given the weight constraints
Sample Input
4 61 42 63 122 7
Sample Output
23
Source
/*二维数组求解但是此题Memory限制 AC不了 只能用一维数组存储写二维数组 仅供学习*/#include <iostream>using namespace std;const int N = 3405;const int M = 12885;#define max(a, b) (a) > (b) ? (a) : (b)int dp[N][M];int W[N];int P[N];int main(){int n, m;scanf("%d %d", &n, &m);for(int i = 1; i <= n; i++) scanf("%d %d", &W[i], &P[i]);//注意,i==1或者j==1时,会用到dp边界下标为0的元素,由于已经初始化这些元素为0,保证了程序的正确运行for(int i = 1; i <= n; i++)for(int j = 1; j <= m; j++) {if(W[i] <= j)dp[i][j] = max(dp[i-1][j-W[i]] + P[i], dp[i-1][j]);elsedp[i][j] = dp[i-1][j];}printf("%d\n", dp[n][m]);return 0;}
//一维数组求解#include<cstdio>#include<cstring>#define N 3500#define M 13000#define max(a, b) (a) > (b) ? (a) : (b)int n, m;int W[N], P[N];int dp[M];int main(){while(scanf("%d %d", &n, &m) != EOF){for(int i = 1; i <= n; i++){scanf("%d", &W[i]);scanf("%d", &P[i]);}memset(dp, 0 , sizeof(dp));for(int i = 1; i <= n; i++)for(int j = m; j >= W[i]; j--)dp[j] = max(dp[j], dp[j - W[i]] + P[i]);printf("%d\n", dp[m]);}return 0;}
- poj 3624 Charm Bracelet 01背包问题
- POJ 3624 Charm Bracelet 01背包问题
- 01背包问题:poj 3624 Charm Bracelet
- POJ 3624Charm Bracelet (01背包问题)
- POJ 3624 Charm Bracelet 动态规划(01背包问题)
- POJ 3624 Charm Bracelet(01背包问题)
- Charm Bracelet poj 3624 (01) 背包问题 c++
- POJ 3624 Charm Bracelet(01背包问题)
- poj 3624 Charm Bracelet (01背包)
- poj 3624 Charm Bracelet(01背包)
- 【POJ-3624】Charm Bracelet (01背包)
- POJ 3624 Charm Bracelet(01背包)
- POJ 3624 Charm Bracelet (01背包)
- 【POJ】3624 - Charm Bracelet(01背包)
- POJ 3624 Charm Bracelet(01背包)
- POJ 3624 Charm Bracelet (01背包)
- POJ 3624 Charm Bracelet(经典的01背包问题)
- POJ 3624 Charm Bracelet (0-1背包问题)
- Github使用一:创建项目并上传到Github上
- hdoj_2044 一只小蜜蜂...
- wubi初学者好用的工具
- Hadoop集群部署配置文档(第2部分)
- 卡特兰数
- POJ 3624 Charm Bracelet(01背包问题)
- 掌握六大技能即可搞定英语
- 登陆三次错误提示15分钟后再试
- UITextField 的属性
- CentOS 6.4 图文安装教程
- 深入浅出MFC学习笔记:MFC六大关键技术仿真之永续生存
- TopCoder 250 points 17-SRM 152 DIV 1 106.51/250 42.60%
- SZ斐波那契数列
- 设计模式六大设计原则之迪米特法则(Law Of Demeter)