Charm Bracelet poj 3624 (01) 背包问题 c++
来源:互联网 发布:电脑重装数据恢复 编辑:程序博客网 时间:2024/06/15 05:37
Charm Bracelet
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 theN (1 ≤N ≤ 3,402) available charms. Each charm i in the supplied list has a weightWi (1 ≤Wi ≤ 400), a 'desirability' factorDi (1 ≤Di ≤ 100), and can be used at most once. Bessie can only support a charm bracelet whose weight is no more thanM (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 andDi
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
#include<cstdio>#include<cstring>#include<cmath>using namespace std;int w[5000],v[5000];int f[14000];int max(int a,int b){ if(a<b) return b; return a;}int main(){ int i,j,n,m; while(scanf("%d%d",&n,&m)!=EOF) { memset(w,0,sizeof(w)); memset(v,0,sizeof(v)); memset(f,0,sizeof(f)); for(i=1;i<=n;i++) scanf("%d%d",&w[i],&v[i]); for(i=1;i<=n;i++) for(j=m;j>=w[i]&&j>0;j--) f[j]=max(f[j],f[j-w[i]]+v[i]); printf("%d\n",f[m]); } return 0;}
//第一次做01背包问题,是个入门题,注意数组开的要大一点,还有就是,这个题用二维数组会超内存;
后来和同学讨论的 只定义一个数组就可以了,没必要定义三个,代码如下:
#include<cstdio>#include<cstring>int main(){ int a,b,dp[1100],i,j,v,n; while(scanf("%d%d",&n,&v),!(n==0&&v==0)) { memset(dp,0,4400); for(i=1;i<=n;i++) { scanf("%d%d",&a,&b); for(j=v;j>=a;j--) if(dp[j]<dp[j-a]+b) dp[j]=dp[j-a]+b; } printf("%d\n",dp[v]); } 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背包问题)
- Codeforces Round #259 (Div. 2)-B. Little Pony and Sort by Shift
- iOS下用一行代码实现tableview(collectionview)的parallax效果
- TP-LINK WR703N 刷OpenWrt并设置pppoe联网、安装LUCI、添加新用户、挂载USB设备、配置ftp服务、借由transmission实现脱机下载
- 菜鸟的安卓实习之路---采用preferenceFragment布局
- CSS编码规范(二)
- Charm Bracelet poj 3624 (01) 背包问题 c++
- 使用归档来创建对象的深复制
- socket套接字TCP API说明
- hibernate-Query.list()与Query.iterate()比较
- 模版解析
- 对一段Oracle GoldenGate (OGG) 传输进程日志(.rpt文件)的解释
- UI05-学习笔记
- 分数加减法 poj 3979
- Codeforces Round #259 (Div. 2) C Little Pony and Expected Maximum