入门级动态规划
#include"iostream" #include"string.h" #include"stdio.h" using namespace std; #define mx 1010 int value[mx],v[mx]; int dp[mx]; int max(int a,int b) { return a>b?a:b; } int main() { int n,i,j,t,V; cin>>t; while(t--) { cin>>n>>V; for(i=1;i<=n;i++) cin>>value[i]; for(i=1;i<=n;i++) cin>>v[i]; memset(dp,0,sizeof(dp)); for(i=1;i<=n;i++) { for(j=V;j>=v[i];j--) { dp[j]=max(dp[j],dp[j-v[i]]+value[i]); } } cout<<dp[V]<<endl; } return 0; }