雞蛋數量為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對應最...