您的位置:首页 > 其它

POJ 3624 Charm Bracelet(01背包 基础)

2014-08-20 01:32 375 查看
题意: n个装饰品 容量m的背包

每个装饰品 重wi 价值 di

求能装的最大价值

思路:基础01背包

#include<stdio.h>
#include<string.h>
#include<math.h>
#include<iostream>
#include<algorithm>
#include<queue>
#include<stack>
#define mem(a,b) memset(a,b,sizeof(a))
using namespace std;

int dp[13880];
int main()
{
int n,m;
int i,j;
int w,d;
int maxx;
while(scanf("%d%d",&n,&m)!=EOF)
{
mem(dp,-1);
dp[0]=0;maxx=0;
while(n--)
{
scanf("%d%d",&w,&d);
for(i=m;i>=w;i--)
{
if(dp[i-w]!=-1&&dp[i-w]+d>dp[i])
{
dp[i]=dp[i-w]+d;
if(dp[i]>maxx) maxx=dp[i];
}
}
}
printf("%d\n",maxx);
}
return 0;
}


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: