题目:http://poj.org/problem?id=3624
传说中的01背包问题啊!
代码:
#include <stdio.h>
#include <stdlib.h>
int w[3500],v[3500];
int s[13000];
int max(int a,int b)
{
return a>b? a:b;
}
int main()
{
int bag,limit,i,j;
while( scanf("%d%d",&bag,&limit) != EOF )
{
for(i = 0 ; i < bag ; ++i)
scanf("%d%d",w+i,v+i);
for(j = 0 ;j < bag; ++j)
for(i = limit ; i >= w[j]; --i)
{
s[i] = max(s[i],s[i-w[j]]+v[j]);
}
printf("%d\n",s[limit]);
}
// system("pause");
return 0;
}