高樓扔雞蛋

2021-10-23 11:04:23 字數 871 閱讀 8147

雞蛋數量為m,高樓層數為n,使用最小次數p去找到扔下雞蛋會碎的最小層數

首先第0層,則p = 0;雞蛋數量m = 0時,則p無法計算,也預設為p = 0;

然後第1層,則p = 1;雞蛋數量m = 1時,則最壞情況 p = n;

可以假設從k層扔下,

倘若碎了,題目就變成了雞蛋數量為m-1,樓層則變為了k-1,扔蛋最小次數p-1次;

另外一種情況則是沒有碎,則依然是雞蛋數量m,層數變為n-k,扔蛋最小次數也還是p-1次。

反覆迴圈

遍歷各個k,取得最小p

#include.h>

using namespace std;

const int m=51

;const int n

=1001

;int dp[m]

[n];

void

dropeggs()

for(int i =

1; i <

n; i++

)for

(int i =

2; i <

m; i++

)for

(int j =

2; j <

n; j++

)for

(int k =

1; k < j; k++

) dp[i]

[j]=

min(dp[i]

[j],

max(dp[i]

[j-k]

, dp[i-1]

[k-1])

+1);

}int main()

cout<} cout<[n]

}

妙 高樓扔雞蛋的數學解法

數學方法 參考 關於高樓扔雞蛋問題,本文只對動態規劃方法進行概括性的描述,具體看這裡。k個雞蛋 n 層樓,問至少嘗試多少次可以找到雞蛋不碎的臨界樓層,求最少次數m 設dp k n 表示k個雞蛋n層樓要嘗試的最少次數 dp k n min 1 x n min min1 x n max dp k 1 x...

C 演算法集錦(12) 高樓扔雞蛋

我有一籮筐的雞蛋,我可以給你兩個。我有一棟一百層的樓,我想讓你站在第一百層,以最少的次數幫我測出來雞蛋最多扔到哪一層不會碎。你放心扔,如果沒碎,不用去撿,我直接補給你乙個。事成之後,這張支票你隨便填。佰 拾 圓咋樣,有什麼想法嗎?我說說我的想法,首先,第二個雞蛋肯定一層一層扔啊 不是兩層兩層扔 那第...

每日一題 高樓扔雞蛋

2020.04.11 這題其實正常思路還可以,有點類似b站李永樂老師講的方法。核心還是尋找子問題,dp i j 表示一共有i層j個雞蛋。可以把dp i j 分為先在第m層扔一次,在剩下的結果裡繼續分析。dp i j min dp i j max dp m j 1 dp n m j 第乙個min對應最...