From a92743cd6f3e5c8f904a0fc7580ba975700c394d Mon Sep 17 00:00:00 2001 From: Deepak Date: Thu, 5 Oct 2017 19:26:35 +0530 Subject: [PATCH 1/2] Add Eggdroping puzzle Dynamic Programming solution for the popular Egg Dropping Puzzle --- Dynamic Programming/EggDropping.java | 54 ++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 Dynamic Programming/EggDropping.java diff --git a/Dynamic Programming/EggDropping.java b/Dynamic Programming/EggDropping.java new file mode 100644 index 00000000..0dd3685d --- /dev/null +++ b/Dynamic Programming/EggDropping.java @@ -0,0 +1,54 @@ +//Dynamic Programming solution for the Egg Dropping Puzzle +public class EggDropping +{ + + // min trials with n eggs and m floors + + private static int minTrials(int n, int m) + { + + int eggFloor[][] = new int[n+1][m+1]; + int result, x; + + for (int i = 1; i <= n; i++) + { + eggFloor[i][0] = 0; // Zero trial for zero floor. + eggFloor[i][1] = 1; // One trial for one floor + } + + // j trials for only 1 egg + + for (int j = 1; j <= m; j++) + eggFloor[1][j] = j; + + // Using bottom-up approach in DP + + for (int i = 2; i <= n; i++) + { + for (int j = 2; j <= m; j++) + { + eggFloor[i][j] = Integer.MAX_VALUE; + for (x = 1; x <= j; x++) + { + result = 1 + Math.max(eggFloor[i-1][x-1], eggFloor[i][j-x]); + + //choose min of all values for particular x + if (result < eggFloor[i][j]) + eggFloor[i][j] = result; + } + } + } + return eggFloor[n][m]; + + } + + //testing program + public static void main(String args[]) + { + int n = 2, m = 4; + //result outputs min no. of trials in worst case for n eggs and m floors + + int result = minTrials(n, m); + System.out.println(result); + } +} From cc4fda5d0c0f14388e47c066d87e0cdf8e79f54a Mon Sep 17 00:00:00 2001 From: Deepak Date: Thu, 5 Oct 2017 19:32:03 +0530 Subject: [PATCH 2/2] updated proper spacing --- Dynamic Programming/EggDropping.java | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/Dynamic Programming/EggDropping.java b/Dynamic Programming/EggDropping.java index 0dd3685d..382d7ea8 100644 --- a/Dynamic Programming/EggDropping.java +++ b/Dynamic Programming/EggDropping.java @@ -13,18 +13,18 @@ public class EggDropping for (int i = 1; i <= n; i++) { eggFloor[i][0] = 0; // Zero trial for zero floor. - eggFloor[i][1] = 1; // One trial for one floor + eggFloor[i][1] = 1; // One trial for one floor } - // j trials for only 1 egg + // j trials for only 1 egg - for (int j = 1; j <= m; j++) + for (int j = 1; j <= m; j++) eggFloor[1][j] = j; // Using bottom-up approach in DP - for (int i = 2; i <= n; i++) - { + for (int i = 2; i <= n; i++) + { for (int j = 2; j <= m; j++) { eggFloor[i][j] = Integer.MAX_VALUE; @@ -33,22 +33,21 @@ public class EggDropping result = 1 + Math.max(eggFloor[i-1][x-1], eggFloor[i][j-x]); //choose min of all values for particular x - if (result < eggFloor[i][j]) - eggFloor[i][j] = result; + if (result < eggFloor[i][j]) + eggFloor[i][j] = result; } } } + return eggFloor[n][m]; - } //testing program public static void main(String args[]) { - int n = 2, m = 4; - //result outputs min no. of trials in worst case for n eggs and m floors - - int result = minTrials(n, m); - System.out.println(result); + int n = 2, m = 4; + //result outputs min no. of trials in worst case for n eggs and m floors + int result = minTrials(n, m); + System.out.println(result); } }