Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
Selected Reading
Egg Dropping Puzzle
This is a famous puzzle problem. Suppose there is a building with n floors, if we have m eggs, then how can we find the minimum number of drops needed to find a floor from which it is safe to drop an egg without breaking it.
There some important points to remember −
- When an egg does not break from a given floor, then it will not break for any lower floor also.
- If an egg breaks from a given floor, then it will break for all upper floors.
- When an egg breaks, it must be discarded, otherwise, we can use it again.
Input and Output
Input: The number of eggs and the maximum floor. Say the number of eggs are 4 and the maximum floor is 10. Output: Enter number of eggs: 4 Enter max Floor: 10 Minimum number of trials: 4
Algorithm
eggTrialCount(eggs, floors)
Input: Number of eggs, maximum floor.
Output − Get a minimum number of trials.
Begin define matrix of size [eggs+1, floors+1] for i:= 1 to eggs, do minTrial[i, 1] := 1 minTrial[i, 0] := 0 done for j := 1 to floors, do minTrial[1, j] := j done for i := 2 to eggs, do for j := 2 to floors, do minTrial[i, j] := ∞ for k := 1 to j, do res := 1 + max of minTrial[i-1, k-1] and minTrial[i, j-k] if resExample
#includeusing namespace std; int max(int a, int b) { return (a > b)? a: b; } int eggTrialCount(int eggs, int floors) { //minimum trials for worst case int minTrial[eggs+1][floors+1]; //to store minimum trials for ith egg and jth floor int res; for (int i = 1; i > egg; cout > maxFloor; cout Output
Enter number of eggs: 4 Enter max Floor: 10 Minimum number of trials: 4
Advertisements
