hdu2602题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2602
poj3624题目链接:http://poj.org/problem?id=3624
两个题都是非常非常裸的0-1背包。。
hdu2602代码:
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int t;
int f[1005];
int v[1005];
int w[1005];
int main()
{
scanf("%d",&t);
while(t--)
{
int n,V;
scanf("%d%d",&n,&V);
for(int i = 1;i <= n;++i)
scanf("%d",&w[i]);
for(int i = 1;i <= n;++i)
scanf("%d",&v[i]);
memset(f,0,sizeof f);
for(int i = 1;i <= n;++i)
for(int j = V;j >= v[i];--j)
f[j] = max(f[j],f[j - v[i]] + w[i]);
printf("%d\n",f[V]);
}
return 0;
}
poj3624代码
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int f[13000];
int v[4000];
int w[4000];
int main()
{
int n,m;
while(~scanf("%d%d",&n,&m))
{
for(int i = 1;i <= n;++i)
scanf("%d%d",&v[i],&w[i]);
memset(f,0,sizeof f);
for(int i = 1;i <= n;++i)
for(int j = m;j >= v[i];--j)
f[j] = max(f[j],f[j - v[i]] + w[i]);
printf("%d\n",f[m]);
}
return 0;
}