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 res 

Example

#include
using 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
Updated on: 2020-06-16T14:42:42+05:30

740 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements