HDU 2602
#include<stdio.h>
#include<string.h>
struct fly
{
int v;
int w;
}z[1007];
int cmp(int a,int b)
{
return a>b?a:b;
}
int dp[1007];
int main()
{
int t,i,j;
scanf("%d",&t);
while(t--)
{
int N,V;
scanf("%d%d",&N,&V);
for(i=0;i<N;i++)
{
scanf("%d",&z[i].v);
}
for(i=0;i<N;i++)
{
scanf("%d",&z[i].w);
}
memset(dp,0,sizeof(dp));
for(i=0;i<N;i++)
for(j=V;j>=z[i].w;j--)
{
dp[j]=cmp(dp[j],dp[j-z[i].w]+z[i].v);
}
printf("%d\n",dp[V]);
}
return 0;
}
或者
# include<stdio.h>
# include<string.h>
int f[2000],V;
void ZeroOnePack(int value,int volume)
{
int v;
for(v=V;v>=value;v--)
if(f[v]<f[v-value]+volume)
f[v]=f[v-value]+volume;
}
int main()
{
int i,t,n,c[1001],w[1001];
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&V);
for(i=0;i<n;i++)
scanf("%d",&w[i]);
for(i=0;i<n;i++)
scanf("%d",&c[i]);
memset(f,0,sizeof(f));
for(i=0;i<n;i++)
ZeroOnePack(c[i],w[i]);
printf("%d\n",f[V]);
}
return 0;
}