1 5 10 1 2 3 4 5 5 4 3 2 1
14
#include <cstdio> #include <iostream> #include <cstring> using namespace std ; int dp[10000] ; int value[1005],weight[1005] ; int t,n,v; int main() { while(scanf("%d",&t)!=EOF) { while(t--) { scanf("%d%d",&n,&v) ; for(int i = 0 ;i<n ;i++) scanf("%d",&value[i]) ; for(int j = 0 ;j<n ;j++) scanf("%d",&weight[j]) ; memset(dp,0,sizeof(dp)) ; for(int i = 0; i<n ;i++) { for(int j = v ;j>=weight[i] ;j--) { dp[j] = max(dp[j],dp[j-weight[i]]+value[i]) ; } } printf("%d\n",dp[v]) ; } } return 0 ; }
杭电 2603 Bone Collector(简单01背包)
原文地址:http://blog.csdn.net/u012566693/article/details/44901597