From d38a93d0934fc7560216c667b3a1db51e5c0f6e6 Mon Sep 17 00:00:00 2001 From: Bharti Meena <60185429+bhartimeena@users.noreply.github.com> Date: Wed, 5 Oct 2022 19:32:11 +0530 Subject: [PATCH] Recursive solution for 0/1 knapsackProblem --- KnapsackRecursion.cpp | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 KnapsackRecursion.cpp diff --git a/KnapsackRecursion.cpp b/KnapsackRecursion.cpp new file mode 100644 index 0000000..ed3288d --- /dev/null +++ b/KnapsackRecursion.cpp @@ -0,0 +1,40 @@ +// 0/1 knapsack problem +//I/P : wt[]: 1 3 4 5 and val[]: 1 4 5 7 and W: 7 +// output: maximum profit +// recursive apporach +/* A Naive recursive implementation of 0-1 Knapsack problem */ +#include +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, int wt[], 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 val[] = { 60, 100, 120 }; + int wt[] = { 10, 20, 30 }; + int W = 50; + int n = sizeof(val) / sizeof(val[0]); + cout << knapSack(W, wt, val, n); + return 0; +} \ No newline at end of file