Advertisement
El_GEMMY

knapsack (Tabulation)

Mar 26th, 2022
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.50 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define all(v) v.begin(),v.end()
  5. #define rall(v) v.rbegin(),v.rend()
  6. #define ll long long
  7. #define ull unsigned long long
  8. #define MOD 1000000007
  9. #define PI 3.14159265
  10. #define ceil(a, b) ((a / b) + (a % b ? 1 : 0))
  11. #define imin INT_MIN
  12. #define imax INT_MAX
  13. #define nl '\n'
  14.  
  15. void Start_Crushing(){
  16.     ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);
  17.  #ifndef ONLINE_JUDGE
  18.      freopen("input.txt","r",stdin); freopen("output.txt","w",stdout);
  19.      freopen("error.txt", "w", stderr);
  20.  #endif
  21. }
  22. vector<int> weights, values;
  23. int n, w;
  24.  
  25. int knapsack(){
  26.     int grid[n + 1][w + 1];
  27.  
  28.     for(int i = 0; i <= n; i++){
  29.         for(int j = 0; j <= w; j++){
  30.             if(!i or !j)
  31.                 grid[i][j] = 0;
  32.             else if(weights[i - 1] <= j)
  33.                 grid[i][j] = max(grid[i - 1][j], values[i - 1] + grid[i - 1][j - weights[i - 1]]);
  34.             else
  35.                 grid[i][j] = grid[i - 1][j];
  36.         }
  37.     }
  38.  
  39.     return grid[n][w];
  40. }
  41.  
  42. void solve(){
  43.     cin >> n >> w;
  44.     weights.resize(n), values.resize(n);
  45.  
  46.     for(int i = 0; i < n; i++){
  47.         cin >> weights[i] >> values[i];
  48.     }
  49.     cout << knapsack();
  50. }
  51.  
  52. int main(){
  53.     Start_Crushing();
  54.  
  55.     int t = 1;
  56.     /*is Single Test case?*/ //cin >> t;
  57.     while (t--) {
  58.         solve();
  59.         if(!t) break;
  60.         cout << "\n";
  61.     }
  62.  
  63.      cerr << "time taken : " << (float)clock() / CLOCKS_PER_SEC << " secs" << endl;
  64.  
  65.     return 0;
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement