From 33e99ac773e2c4eda0aa6a994bb848f88def8c7f Mon Sep 17 00:00:00 2001 From: Abdurrezzak Efe Date: Thu, 9 Nov 2017 00:14:05 +0200 Subject: [PATCH] Add files via upload --- 17.Knapsack.cpp | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 17.Knapsack.cpp diff --git a/17.Knapsack.cpp b/17.Knapsack.cpp new file mode 100644 index 0000000..33cb553 --- /dev/null +++ b/17.Knapsack.cpp @@ -0,0 +1,43 @@ +/* + * This program solves 1/0 Knapsack program using Dynamic Programming + * + * Coded by: Abdurrezak EFE + * */ + +#include +#include +#include +#include +using namespace std; + +int d[10000][10000]={0}; //global dynamic programming table +int v[10000]={0}; +int w[10000]={0}; + +int knapsack(int i, int j) +{ + if(j<0) + return -10000000; + + if(i <= 0 || j <= 0) + return 0; + + if(d[i][j]) //if it was calculated return it + return d[i][j]; + + d[i][j] = max(knapsack(i-1, j), knapsack(i-1, j - w[i]) + v[i]); //memoizing the value + + return d[i][j]; +} + +int main() +{ + int n, m; //respectively size of the knapsack and number of items + cin >> n >> m; + + for(int i=1;i<=n;i++) + cin >> v[i] >> w[i]; + + cout << knapsack(n,m); + +}