你將獲得 k 個雞蛋,並可以使用一棟從 1 到 n 共有 n 層樓的建築。
每個蛋的功能都是一樣的,如果乙個蛋碎了,你就不能再把它掉下去。
你知道存在樓層 f ,滿足 0 <= f <= n 任何從高於 f 的樓層落下的雞蛋都會碎,從 f 樓層或比它低的樓層落下的雞蛋都不會破。
你的目標是確切地知道 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
1 <= k <= 100
1 <= n <= 10000
我的思路:其實第一眼我拿到這個題目的時候,我連解析都看不懂,為啥是已碎的層數加上未碎的層數加一啊?要是你跟我有一樣的疑惑的話,看我這個解析就對了,明明白白的。當你看我這篇文章之後,再看別的動態規劃解法時,基本上就能懂了。
下面圖中有個三橫的格仔,代表一棟大樓的所有層數。
看到我上面那張圖的最後一張小圖沒有?那三項之和剛好等於這棟大樓的層數。先別管這個函式怎麼實現的,先從巨集觀上了解一下他的功能。
**:
class solution
return remaintestcount;
} //在remaintestcount個測試機會(扔雞蛋的機會 或者移動的次數),eggscount個雞蛋可以確定的樓層數量
int getconfirmfloors(int remaintestcount, int eggscount)
return getconfirmfloors(remaintestcount - 1, eggscount - 1) + 1 + getconfirmfloors(remaintestcount - 1, eggscount);//我圖中畫的就是這個
}};
leetcode887 雞蛋掉落
你將獲得 k 個雞蛋,並可以使用一棟從 1 到 n 共有 n 層樓的建築。每個蛋的功能都是一樣的,如果乙個蛋碎了,你就不能再把它掉下去。你知道存在樓層 f 滿足 0 f n 任何從高於 f 的樓層落下的雞蛋都會碎,從 f 樓層或比它低的樓層落下的雞蛋都不會破。你的目標是確切地知道 f 的值是多少。無...
Leetcode 887 雞蛋掉落
你將獲得 k 個雞蛋,並可以使用一棟從 1 到 n 共有 n 層樓的建築。每個蛋的功能都是一樣的,如果乙個蛋碎了,你就不能再把它掉下去。你知道存在樓層 f 滿足 0 f n 任何從高於 f 的樓層落下的雞蛋都會碎,從 f 樓層或比它低的樓層落下的雞蛋都不會破。你的目標是確切地知道 f 的值是多少。無...
leetcode 887 雞蛋掉落
887.雞蛋掉落 你將獲得 k 個雞蛋,並可以使用一棟從 1 到 n 共有 n 層樓的建築。每個蛋的功能都是一樣的,如果乙個蛋碎了,你就不能再把它掉下去。你知道存在樓層 f 滿足 0 f n 任何從高於 f 的樓層落下的雞蛋都會碎,從 f 樓層或比它低的樓層落下的雞蛋都不會破。你的目標是確切地知道 ...