LeetCode 887 雞蛋掉落

2021-09-28 13:27:00 字數 1417 閱讀 4408

你將獲得 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 樓層或比它低的樓層落下的雞蛋都不會破。你的目標是確切地知道 ...