您的位置:首页 > 其它

poj 3624 Charm Bracelet

2014-08-01 13:54 441 查看
Charm Bracelet
Time Limit: 1000MS Memory Limit: 65536K
Total Submissions: 23039 Accepted: 10364
DescriptionBessie 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 DiOutput* Line 1: A single integer that is the greatest sum of charm desirabilities that can be achieved given the weight constraintsSample Input
4 6
1 4
2 6
3 12
2 7
Sample Output
23
0-1背包 数组不要开小了
#include <iostream>#include <cstdio>#include <cstring>using namespace std;struct Node{int w,d;};Node a[3404];int f[14050];int main(){int n,m;int i,j;while(scanf("%d %d",&n,&m)!=EOF){for(i=0;i<n;i++){scanf("%d %d",&a[i].w,&a[i].d);}memset(f,0,sizeof(f));for(i=0;i<n;i++){for(j=m;j>=a[i].w;j--){f[j]=max(f[j],f[j-a[i].w]+a[i].d);}} printf("%d\n",f[m]);   }return 0;} 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  poj 背包