VOOZH about

URL: https://www.geeksforgeeks.org/dsa/eggs-dropping-puzzle-binomial-coefficient-and-binary-search-solution/

⇱ Eggs dropping puzzle (Binomial Coefficient and Binary Search Solution) - GeeksforGeeks


  • Courses
  • Tutorials
  • Interview Prep

Eggs dropping puzzle (Binomial Coefficient and Binary Search Solution)

Last Updated : 11 Jul, 2025

Given n eggs and k floors, find the minimum number of trials needed in worst case to find the floor below which all floors are safe. A floor is safe if dropping an egg from it does not break the egg. Please see n eggs and k floors. for complete statements

Example

Input : n = 2, k = 10
Output : 4
We first try from 4-th floor. Two cases arise,
(1) If egg breaks, we have one egg left so we
 need three more trials.
(2) If egg does not break, we try next from 7-th
 floor. Again two cases arise.
We can notice that if we choose 4th floor as first
floor, 7-th as next floor and 9 as next of next floor,
we never exceed more than 4 trials.

Input : n = 2. k = 100
Output : 14

We have discussed the problem for 2 eggs and k floors. We have also discussed a dynamic programming solution to find the solution. The dynamic programming solution is based on below recursive nature of the problem. Let us look at the discussed recursive formula from a different perspective.

How many floors we can cover with x trials? 
When we drop an egg, two cases arise. 

  1. If egg breaks, then we are left with x-1 trials and n-1 eggs.
  2. If egg does not break, then we are left with x-1 trials and n eggs
Let maxFloors(x, n) be the maximum number of floors 
that we can cover with x trials and n eggs. From above 
two cases, we can write.

maxFloors(x, n) = maxFloors(x-1, n-1) + maxFloors(x-1, n) + 1
For all x >= 1 and n >= 1

Base cases : 
We can't cover any floor with 0 trials or 0 eggs
maxFloors(0, n) = 0
maxFloors(x, 0) = 0

Since we need to cover k floors, 
maxFloors(x, n) >= k ----------(1)

The above recurrence simplifies to following,
Refer this for proof.

maxFloors(x, n) = ∑xCi
 1 <= i <= n ----------(2)
Here C represents Binomial Coefficient.

From above two equations, we can say.
&Sum;xCj >= k
1 <= i <= n
Basically we need to find minimum value of x
that satisfies above inequality. We can find
such x using Binary Search.

Output
4

Time Complexity : O(n Log k)
Auxiliary Space: O(1)

Another Approach:

The approach with O(n * k^2) has been discussed before, where dp[n][k] = 1 + max(dp[n - 1][i - 1], dp[n][k - i]) for i in 1...k. You checked all the possibilities in that approach.

Consider the problem in a different way:

dp[m][x] means that, given x eggs and m moves,
what is the maximum number of floors that can be checked

The dp equation is: dp[m][x] = 1 + dp[m - 1][x - 1] + dp[m - 1][x],
which means we take 1 move to a floor.
If egg breaks, then we can check dp[m - 1][x - 1] floors.
If egg doesn't break, then we can check dp[m - 1][x] floors.

Output

4

Time Complexity: O(n*k)
Auxiliary Space: O(n*k)

Optimization to one-dimensional DP

The above solution can be optimized to one-dimensional DP as follows:


Output

4

Complexity Analysis:

  • Time Complexity: O(n * log k)
  • Auxiliary Space: O(n)
Comment
Article Tags:
Article Tags: