HDU 2602 Bone Collector(0/1背包)

来源:互联网 发布:三星4621ns 网络打印 编辑:程序博客网 时间:2024/04/30 08:21

还好这个题目只是要求打印最大权值,利用一维数组就可以解决了。

#include<stdio.h>#include<stdlib.h>#include<string.h>int v[1001],w[1001],f[1001];int main(){int n;int N,V;int i,k;scanf("%d",&n);while(n--){scanf("%d%d",&N,&V);for(i=0;i<N;i++)scanf("%d",&w[i]);for(i=0;i<N;i++)scanf("%d",&v[i]);memset(f,0,sizeof(f));for(i=0;i<N;i++){for(k=V;k>=0;k--)if(k>=v[i])f[k]=f[k]>f[k-v[i]]+w[i]?f[k]:f[k-v[i]]+w[i];}printf("%d\n",f[V]);}return 0;}



原创粉丝点击