http://acm.hdu.edu.cn/showproblem.php?pid=2602
AC代码:
#include<stdio.h> long dp[1005],w[1005],c[1005]; int n; int V; void ZeroOnePack(long c,long w) { int v; for(v=V;v>=c;v--) if(dp[v]<dp[v-c]+w) dp[v]=dp[v-c]+w; } int main() { int T; int i; scanf("%d",&T); while(T--) { scanf("%d%d",&n,&V); for(i=1;i<=n;i++) scanf("%ld",&w[i]); for(i=1;i<=n;i++) scanf("%ld",&c[i]); for(i=0;i<=V;i++) dp[i]=0; for(i=1;i<=n;i++) ZeroOnePack(c[i],w[i]); printf("%ld\n",dp[V]); } return 0; }