經典面試題樓層丟雞蛋問題的動態規劃解法與數學解法

2022-07-28 22:39:26 字數 1107 閱讀 9156

原題:

2個雞蛋,從100層樓上往下扔,以此來測試雞蛋的硬度。比如雞蛋在第9層沒有摔碎,在第10層摔碎了,那麼雞蛋不會摔碎的臨界點就是9層。

問:如何用最少的嘗試次數,測試出雞蛋不會摔碎的臨界點?

注意:只有兩個雞蛋。第乙個雞蛋碎了,第二個雞蛋只能挨個樓層測試了。

動態規劃解法:

//

height為樓層數

const

int maxheight = 100

;

int dp[maxheight + 5] = ;

for (int height = 1; height <= maxheight; height++)

}//動態規劃完畢,看看結果

for (int height = 1; height <= maxheight; height++)

數學解法:別人的

圖非原創,結果如圖所示。

動態規劃解法:

//

樓層 雞蛋數

int dp[105][105] = ;

int maxheight = 100, maxeggs = 100

;

for (int height = 1; height <= maxheight; height++)

dp[height][

1] =height;

for (int eggs = 1; eggs <= maxeggs; eggs++)

dp[1][eggs] = 1

;

for (int height = 2; height <= maxheight; height++)}}

//動態規劃完畢,看看結果

for (int height = 1; height <= 100; height++)

printf("\n

");}

經典面試問題 丟雞蛋

扔雞蛋是一道經典的面試題,具體問題是給出 n n 2 個雞蛋,以及m層樓房 m n 要求計算最少需要多少次 平均需要多少次能得出雞蛋在第幾層正好摔碎。這道題根據雞蛋的個數以及其他要求,衍生出了很多變種,這裡將整理部分題型及其思路。一般來說,可以分為雞蛋 或玻璃球 有限制和無限制兩種情況,在無限制的情...

經典谷歌面試題 扔雞蛋問題

假如有100層樓,總共有2個雞蛋。需要多少次才能試探出臨界點,比如,在第三層扔下去,不碎 在第四層扔下去,碎了,那第三層和第四層就是臨界點。如果之前沒準備過的話,大概第乙個想到的就是二分法。1.二分法 首先在第50層丟第乙個雞蛋,若雞蛋碎了,則在第一層開始往上丟雞蛋,最壞情況是試探49 1次,為什麼...

谷歌經典面試題 雞蛋掉落問題

你將獲得 k 個雞蛋,並可以使用一棟從 1 到 n 共有 n 層樓的建築。每個蛋的功能都是一樣的,如果乙個蛋碎了,你就不能再把它掉下去。你知道存在樓層 f 滿足 0 f n 任何從高於 f 的樓層落下的雞蛋都會碎,從 f 樓層或比它低的樓層落下的雞蛋都不會破。你的目標是確切地知道 f 的值是多少。無...