Advertisement
YamanQD

GeeksforGeeks : Knapsack

Mar 23rd, 2020
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.83 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define ll long long
  5. #define mp make_pair
  6. #define pb push_back
  7.  
  8. ll n,wm,ans;
  9. ll w[1010];
  10. ll v[1010];
  11.  
  12. ll m[1010][1010];
  13.  
  14. void nill(){
  15.     for(int i=0;i<1010;i++)
  16.         for(int j=0;j<1010;j++)
  17.             m[i][j] = -1;
  18. }
  19.  
  20. ll solve(ll k,ll i){
  21.     if(i==n || k==0)
  22.         return 0;
  23.     if(m[k][i] != -1)
  24.         return m[k][i];
  25.  
  26.     if(w[i] > k)
  27.         return m[k][i] = solve(k,i+1);
  28.  
  29.     return m[k][i] = max(v[i] + solve(k-w[i],i+1), solve(k,i+1) );
  30.  
  31. }
  32.  
  33. int main(){
  34. ios::sync_with_stdio(false);
  35.  
  36.     int t; cin >> t;
  37.     while(t--){
  38.         nill();
  39.         cin >> n >> wm;
  40.  
  41.         for(int i=0;i<n;i++)
  42.             cin >> v[i];
  43.         for(int i=0;i<n;i++)
  44.             cin >> w[i];
  45.  
  46.         cout << solve(wm,0) << endl;
  47.     }
  48.  
  49.     return 0;
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement