From afeea0c96731cca1a725c0cfa2af4049e8593e19 Mon Sep 17 00:00:00 2001 From: NITIN AGGARWAL <45655770+nitin-1906@users.noreply.github.com> Date: Tue, 1 Oct 2019 21:47:04 +0530 Subject: [PATCH 1/2] Added subset_sum.cpp --- Algorithms/Dynamic Programming/subset_sum.cpp | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 Algorithms/Dynamic Programming/subset_sum.cpp diff --git a/Algorithms/Dynamic Programming/subset_sum.cpp b/Algorithms/Dynamic Programming/subset_sum.cpp new file mode 100644 index 0000000..edb2f35 --- /dev/null +++ b/Algorithms/Dynamic Programming/subset_sum.cpp @@ -0,0 +1,37 @@ +#include + +bool isSubsetSum(int set[], int n, int sum) +{ + bool subset[n+1][sum+1]; + + for (int i = 0; i <= n; i++) + subset[i][0] = true; + + for (int i = 1; i <= sum; i++) + subset[0][i] = false; + + for (int i = 1; i <= n; i++) + { + for (int j = 1; j <= sum; j++) + { + if(j= set[i-1]) + subset[i][j] = subset[i-1][j] || + subset[i - 1][j-set[i-1]]; + } + } + return subset[n][sum]; +} + +int main() +{ + int set[] = {13, 34, 44, 18, 9, 23}; + int sum = 56; + int n = sizeof(set)/sizeof(set[0]); + if (isSubsetSum(set, n, sum) == true) + cout<<"Found a subset with given sum"< Date: Tue, 8 Oct 2019 22:34:12 +0530 Subject: [PATCH 2/2] Created egg_dropping_puzzle.cpp --- .../egg_dropping_puzzle.cpp | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 Algorithms/Dynamic Programming/egg_dropping_puzzle.cpp diff --git a/Algorithms/Dynamic Programming/egg_dropping_puzzle.cpp b/Algorithms/Dynamic Programming/egg_dropping_puzzle.cpp new file mode 100644 index 0000000..9c56d10 --- /dev/null +++ b/Algorithms/Dynamic Programming/egg_dropping_puzzle.cpp @@ -0,0 +1,43 @@ +#include +using namespace std; + +int max(int a, int b) { return (a > b)? a: b; } + +int eggDrop(int n, int k) +{ + int eggFloor[n+1][k+1]; + int res; + int i, j, x; + + for (i = 1; i <= n; i++) + { + eggFloor[i][1] = 1; + eggFloor[i][0] = 0; + } + + for (j = 1; j <= k; j++) + eggFloor[1][j] = j; + + for (i = 2; i <= n; i++) + { + for (j = 2; j <= k; j++) + { + eggFloor[i][j] = INT_MAX; + for (x = 1; x <= j; x++) + { + res = 1 + max(eggFloor[i-1][x-1], eggFloor[i][j-x]); + if (res < eggFloor[i][j]) + eggFloor[i][j] = res; + } + } + } + + return eggFloor[n][k]; +} + +int main() +{ + int n = 10, k = 136; + cout<<"Minimum number of trials needed in worst case: "<