原題:
有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 的值是多少。無...