最樸素的做法是從100層一直扔到1層,不過這樣明顯不是最優的。這題目其實可以轉化為dp求解,假設有n層,你隨機選了一層x,如果雞蛋碎了,那麼你只剩乙個雞蛋了,為了確保能夠找到臨界高度,你不得不從第一層往上一層一層扔剩下的乙個雞蛋。如果沒碎呢,你還剩2個雞蛋,但你已經用了一次測試機會。這時候的次數應該為1+(n-x)層用了兩個雞蛋的最小次數。這裡其實是dp的思維了。
假設dp[n]為在n層用兩個雞蛋測出臨界高度的最小次數,dp
[n]=
min(
max(
i,1+
dp[n
−i])
)(1≤
i≤n)
**實現
dp[1]=1;
for(int i=2;i<=n;i++)
}printf("max times for 100 using two eggs : %d\n",dp[100]);
int p = 100;
int cnt = 0;
while(true)
printf("%d : now is %d high : thorw at %d ,if egg break need %d times,else need %d times\n",++cnt,p,res[p],res[p],1+dp[p-res[p]]);
p = p - res[p];
}
輸出
for100 using two eggs : 14
1 : now is
100 high : thorw at
9 ,if egg break need 9
times,else need 14
times
2 : now is
91 high : thorw at
13 ,if egg break need 13
times,else need 13
times
3 : now is
78 high : thorw at
12 ,if egg break need 12
times,else need 12
times
4 : now is
66 high : thorw at
11 ,if egg break need 11
times,else need 11
times
5 : now is
55 high : thorw at
10 ,if egg break need 10
times,else need 10
times
6 : now is
45 high : thorw at
9 ,if egg break need 9
times,else need 9
times
7 : now is
36 high : thorw at
8 ,if egg break need 8
times,else need 8
times
8 : now is
28 high : thorw at
7 ,if egg break need 7
times,else need 7
times
9 : now is
21 high : thorw at
6 ,if egg break need 6
times,else need 6
times
10 : now is
15 high : thorw at
5 ,if egg break need 5
times,else need 5
times
11 : now is
10 high : thorw at
4 ,if egg break need 4
times,else need 4
times
12 : now is
6 high : thorw at
3 ,if egg break need 3
times,else need 3
times
13 : now is
3 high : thorw at
2 ,if egg break need 2
times,else need 2
times
14 : now is
1 floor , only need one time
面試題目 2個雞蛋100層樓問題
兩種思路 第一種 動態規劃,轉化公式 下面是偶的思路。這是乙個很典型的動態規劃問題。用確定minnum n 表示雞蛋從高n層的樓摔下不碎需要的最小次數。則有 轉移方程 minnum n min 1 max i 1,minnum n 1 for 1 i n 邊界條件 minnum 0 0 minnum...
100層樓摔雞蛋問題
reference 題目 有一棟100層高樓,從某一層開始扔下的玻璃杯剛好摔壞,現有兩個玻璃杯,最少幾次能找到那一層?首先我要對題目的表述提點意見。這是乙個很有歧義的表述方式,容易誤導人向概率的方向去思考。比如說,我可以回答 最少一次能找到那一層 我就拿個杯子,從一樓起一層一層的摔。從概率上講,有可...
100層樓扔兩個雞蛋問題
解釋 兩個雞蛋一樣,只有在達到某個樓層高度時,才會摔碎。可以假設這個摔碎臨界樓層是n。可見,用二分法結果很不穩定,特別是n小於50時最糟糕 甚至會比第一種直接遍歷的還要多一次 n越大越好找,需要嘗試的次數越少。如果這個題目換成雞蛋個數不限制,那就是用二分法最快了。當最高樓層為100時,可列出不等式 ...