POJ 3624 Charm Bracelet (01背包)

http://poj.org/problem?id=3624

题意:求可能的最大值。

思路:典型的01背包。

#include<stdio.h>
#include<string.h>

int f[22222];

int main()
{
	int m,n,w[4444],v[4444];
	while(scanf("%d %d",&n,&m)==2)
	{
		int i,j;
		for(i=1;i<=n;i++)
			scanf("%d %d",&w[i],&v[i]);
		memset(f,0,sizeof(f));
		for(i=1;i<=n;i++)
			for(j=m;j>=w[i];j--)
				if(f[j]<f[j-w[i]]+v[i])
					f[j]=f[j-w[i]]+v[i];
		printf("%d\n",f[m]);
	}
	return 0;
}



你可能感兴趣的:(POJ 3624 Charm Bracelet (01背包))