/* Function to get minimun number of trials needed * in worst case with n eggs and k floors */ #include #include using namespace std; int eggDrop(int n, int k) { int eggFloor[n+1][k+1]; int result; for(int i=1; i<=n; i++) { eggFloor[i][1] = 1; //n eggs..1 Floor eggFloor[i][0] = 0; //n eggs..0 Floor } // Only one egg available for(int j=1; j<=k ; j++) { eggFloor[1][j] = j; } for(int i=2; i<=n; i++) { for(int j=2; j<=k; j++) { eggFloor[i][j] = INT_MAX; for(int x=1; x<=j; x++) { // 1+max(eggBreak[one less egg, lower floors], // eggDoesntBreak[same # of eggs, upper floors]); result = 1 + max(eggFloor[i-1][x-1], eggFloor[i][j-x]); if(result < eggFloor[i][j]) eggFloor[i][j] = result; } } } return eggFloor[n][k]; } int main() { int n, k; cout << "Enter number of eggs and floors: "; cin>>n>>k; cout << "Minimum number of trials in worst case: " << eggDrop(n, k) << endl; return 0; }