Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* A Naive recursive implementation of
- 0-1 Knapsack problem */
- #include <bits/stdc++.h>
- using namespace std;
- // A utility function that returns
- // maximum of two integers
- int max(int a, int b) { return (a > b) ? a : b; }
- // Returns the maximum value that
- // can be put in a knapsack of capacity W
- int knapSack(int W, vector<int> &wt, vector<int> val, int N)
- {
- // Base Case
- if (n == 0 || W == 0)
- return 0;
- // If weight of the nth item is more
- // than Knapsack capacity W, then
- // this item cannot be included
- // in the optimal solution
- if (wt[n - 1] > W)
- return knapSack(W, wt, val, n - 1);
- // Return the maximum of two cases:
- // (1) nth item included
- // (2) not included
- else
- return max(
- val[n - 1]
- + knapSack(W - wt[n - 1],
- wt, val, n - 1),
- knapSack(W, wt, val, n - 1));
- }
- // Driver code
- int main()
- {
- int N,W;
- cin>>N>>W;
- vector<int>wt(N),val(N);
- for(int i=0;i<N;i++)
- {
- cin>>wt[i];
- }
- for(int i=0;i<N;i++)
- {
- cin>>val[i];
- }
- cout << knapSack(W, wt, val, N);
- return 0;
- }
- // This code is contributed by rathbhupendra
Advertisement
Add Comment
Please, Sign In to add comment