题意:给定n个物品的价值和重量,问大小为v的背包最多能装多少价值的物品。
题解:01背包。
#include <bits/stdc++.h> using namespace std; int dp[1000005],v[1005],w[1005],n,sum,t; int main() { scanf("%d",&t); while(t--) { memset(dp,0,sizeof(dp)); scanf("%d%d",&n,&sum); for(int i=0;i<n;i++) scanf("%d",&v[i]); for(int i=0;i<n;i++) scanf("%d",&w[i]); for(int i=0;i<n;i++) for(int j=sum;j>=w[i];j--) dp[j]=max(dp[j],dp[j-w[i]]+v[i]); printf("%d\n",dp[sum]); } return 0; }