LeetCode----------------------雞蛋掉落

你將獲得 K 個雞蛋,並可以使用一棟從 1 到 N  共有 N 層樓的建築。

每個蛋的功能都是一樣的,如果一個蛋碎了,你就不能再把它掉下去。

你知道存在樓層 F ,滿足 0 <= F <= N 任何從高於 F 的樓層落下的雞蛋都會碎,從 F 樓層或比它低的樓層落下的雞蛋都不會破。

每次移動,你可以取一個雞蛋(如果你有完整的雞蛋)並把它從任一樓層 X 扔下(滿足 1 <= X <= N)。

你的目標是確切地知道 F 的值是多少。

無論 F 的初始值如何,你確定 F 的值的最小移動次數是多少?

示例 1:

輸入:K = 1, N = 2
輸出:2
解釋:
雞蛋從 1 樓掉落。如果它碎了,我們肯定知道 F = 0 。
否則,雞蛋從 2 樓掉落。如果它碎了,我們肯定知道 F = 1 。
如果它沒碎,那麼我們肯定知道 F = 2 。
因此,在最壞的情況下我們需要移動 2 次以確定 F 是多少。
示例 2:

輸入:K = 2, N = 6
輸出:3
示例 3:

輸入:K = 3, N = 14
輸出:4

class Solution {
   int cumulative(int L, int K)
{
    int i;
    int N_t = 0;

    if (K == 1) {
        return L - 1;
    }

    for (i = 1; i < L; i ++) {
        N_t += cumulative(i, K - 1) + 1;
    }
    
    return N_t;
}

public int superEggDrop(int K, int N) {
    double t;
    int ret = 2, i;
    int N_t = 0;
    
    if (K == 1) {
        return N; 
    }

    while(true) {
        for (i = 1; i < ret; i ++) {
            N_t += cumulative(i, K - 1) + 1;
        }
       
        if (N_t >= N) {
            return --ret;
        } else {
            N_t = 0;
            ret ++;
        }
    }


}
    
}

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/super-egg-drop
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章