From 333178df066854a8ab401b385cbeee331d80b84b Mon Sep 17 00:00:00 2001 From: Samiksha Upadhyay Date: Fri, 1 Oct 2021 17:33:42 +0530 Subject: [PATCH] Added program solving 0-1 knapsack problem --- C++/0-1 Knapsack.cpp | 45 ++++++++++++++++++++++++++++++++++++++++++++ C++/BinarySearch | 27 -------------------------- 2 files changed, 45 insertions(+), 27 deletions(-) create mode 100644 C++/0-1 Knapsack.cpp delete mode 100644 C++/BinarySearch diff --git a/C++/0-1 Knapsack.cpp b/C++/0-1 Knapsack.cpp new file mode 100644 index 00000000..f776c207 --- /dev/null +++ b/C++/0-1 Knapsack.cpp @@ -0,0 +1,45 @@ +#include + +using namespace std; + +vector > dp(100, vector(100, -1)); + +int find(vector& v, vector& w, int W, int i, int sum) +{ + if(W < 0) + return 0; + + if(i == v.size() || W == 0) + { + return sum; + } + + if(dp[W][i] != -1) + { + return dp[W][i]; + } + + dp[W][i] = max(find(v, w, W, i + 1, sum), find(v, w, W - w[i], i + 1, sum + v[i])); + return dp[W][i]; +} + +int main() +{ + int n; + cin >> n; + + vector v(n, 0); + vector w(n, 0); + + for(int i = 0; i < n; i++) + cin >> v[i]; + + for(int i = 0; i < n; i++) + cin >> w[i]; + + int W; + cin >> W; + + cout << find(v, w, W, 0, 0); + +} diff --git a/C++/BinarySearch b/C++/BinarySearch deleted file mode 100644 index 8ef66d78..00000000 --- a/C++/BinarySearch +++ /dev/null @@ -1,27 +0,0 @@ -#include -using namespace std; -int binarysearch(int a[],int n,int num){ - int beg=0; - int end=n-1; - int mid; - while(beg<=end){ - mid=(beg+end)/2; - if(a[mid]==num) - return mid; - else if(a[mid]0) - cout<<"The num found at index "<