http://poj.org/problem?id=3624
这是一道背包问题。。
代码:
#include <stdio.h>
#include <string.h>
int f[13000];
int max(int a,int b)
{
if(a>b)
return a;
else
return b;
}
int main()
{
int n,m;
while(~scanf("%d %d",&n,&m))
{
int i,j,w[3405],D[3405];
memset(f,0,sizeof(f));
for (i=1;i<=n;i++)
scanf("%d %d",&w[i],&D[i]); //体重和价值
for (i=1;i<=n;i++)
{
for (j=m;j>=w[i];j--)
{
f[j]=max(f[j],f[j-w[i]]+D[i]);
}
}
printf("%d\n",f[m]);
}
return 0;
}