NYOJ 289(0-1背包)

 
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 1001
int ans[N];
int max(int a,int b)
{
if(a>b)
    return a;
    return b; 
}
int main()
{
	int n,v,c,w;
	int max(int,int);
	while(scanf("%d%d",&n,&v),n||v)
	{
		memset(ans,0,sizeof(ans));
		for(int i=1;i<=n;i++)
		{
			scanf("%d%d",&c,&w);
			for(int j=v;j>=c;j--)
				ans[j]=max(ans[j],ans[j-c]+w);
		}
		printf("%d\n",ans[v]);
	}
	system("pause");
	return 0;
}

  

posted @ 2012-05-09 14:10  加拿大小哥哥  阅读(188)  评论(0编辑  收藏  举报