一道有趣的面試題

2021-06-25 17:56:41 字數 2653 閱讀 4159

下面是一道很經典的智力型面試題,也是我一朋友在bat面試中親身見識過的一道題。各位來體驗一下,看看自己的大腦是不是好使。

有一棟樓共100層,乙個雞蛋從第n層及以上的樓層落下來會摔破, 在第n層以下的樓層落下不會摔破。給你2個雞蛋,設計方案找出n,並且保證在最壞情況下, 最小化雞蛋下落的次數。(假設每次摔落時,如果沒有摔碎,則不會給雞蛋帶來損耗)

在參考下面的解答之前,請你先仔細思考10分鐘。看你給出的方案最小下落次數是多少。如果題目總分10分,看看自己能得幾分。

*************************==答案分割線******************************==

解答1:得0分的答案

用二分法。

這基本可以說就是沒有通過大腦得出來的答案,而且還貌似很牛掰的樣子,並常常帶著乙個lgn的複雜度。如果你接著問怎麼個二分法,他就答不上來了。

這個答案不是我杜撰出來的,而是我拿這個題目問過身邊的一些人,其中有幾個人真的隨口就把二分法給說出來了。每當我聽到二分法時,當我沒問。

解答2:得5分的答案

如果我們動一下腦子仔細思考這個問題,我們會得到乙個相對不錯的答案。參加bat面試那位朋友就給出了下面的這種方案,並自認為是一種很完美的答案。但面試官給出的回答是:我還是不滿意。

據說,他這種思路的靈感來自於數學中的求極值問題。

已知兩個自然數的和為25,求這兩個數的平方和的最大、最小值。

解:設乙個自然數為x 另乙個自然數為25-x

x²+(25-x)²

=2x²-50x+625

=2(x²-25x+312.5)

=2[(x-12.5)²-156.25+312.5]

=2[(x-12.5)²+156.25]

所以可得:

當x取12.5時 有最小值2×156.25=312.5  (當x==y==12.5時取得極小值)

當x取25時 有最大值2×(12.5²+156.5)=625

因此,很容易得到啟發(當然,這只是一種直覺,並沒有什麼理論依據。)。100層樓,平均分成10分,每份剛好10層。

那麼我們的做法如下:

將100層樓分成10分,每乙份就是10層樓。首先,將雞蛋從第10層樓開始扔。那麼結果有兩種可能:

情況1:如果碎了,說明臨界樓層在1到10之間,但現在只剩下乙個雞蛋了,只能從第一層一直到第10層。

情況2:如果沒有碎,接下來從第20層扔雞蛋。

該方法的思路是,用乙個雞蛋來試探,找到臨界樓層的大致範圍[1~10]、[11-20]….[91-100]。然後用另乙個雞蛋在大致範圍內找出精確樓層。該方法的最壞次數是:18次。(自己去算,如果你算出來是17次,那就17次唄:))

解答3:得10分的答案

這是真正有理有據的解答。具體如下所述:

我們先假設最壞情況下,雞蛋下落次數為x,即我們為了找出n,一共用雞蛋做了x次的實驗。 那麼,我們第一次應該在哪層樓往下扔雞蛋呢?先讓我們假設第一次是在第y層樓扔的雞蛋, 如果第乙個雞蛋在第一次扔就碎了,我們就只剩下乙個雞蛋,要用它準確地找出n, 只能從第一層向上,一層一層的往上測試,直到它摔壞為止,答案就出來了。 由於第乙個雞蛋在第y層就摔破了, 所以最壞的情況是第二個雞蛋要把第1到第y-1層的樓都測試一遍,最後得出結果, 噢,原來雞蛋在第y-1層才能摔破(或是在第y-1層仍沒摔破,答案就是第y層。) 這樣一來測試次數是1+(y-1)=x,即第一次測試要在第x層。ok, 那如果第一次測試雞蛋沒摔破呢,那n肯定要比x大,要繼續往上找,需要在哪一層扔呢? 我們可以模仿前面的操作,如果第乙個雞蛋在第二次測試中摔破了, 那麼第二個雞蛋的測試次數就只剩下x-2次了(第乙個雞蛋已經用了2次)。 這樣一來,第二次扔雞蛋的樓層和第一次扔雞蛋的樓層之間就隔著x-2層。 我們再回過頭來看一看,第一次扔雞蛋的樓層在第x層,第1層到第x層間共x層; 第1次扔雞蛋的樓層到第2次扔雞蛋的樓層間共有x-1層(包含第2次扔雞蛋的那一層), 同理繼續往下,我們可以得出,第2次扔雞蛋的樓層到第3次扔雞蛋的樓層間共有x-2層, ……最後把這些互不包含的區間數加起來,應該大於等於總共的樓層數量100,即

1

2

3 x+

(x-1

)+(x

-2)+

...+

1>=

100 (x+

1)*x

/2>=

100

得出答案是14。

即我先用第1個雞蛋在以下序列表示的樓層數不斷地向上測試,直到它摔破。 再用第2個雞蛋從上乙個沒摔破的序列數的下一層開始,向上測試, 即可保證在最壞情況下也只需要測試14次,就能用2個雞蛋找出從哪一層開始, 往下扔雞蛋,雞蛋就會摔破。 1

2 14

,27,39

,50,60

,69,77

,84,90

,95,99

,100

比如,我第1個雞蛋是在第77層摔破的,那麼我第2個雞蛋就從第70層開始,向上測試, 第二個雞蛋最多隻需要測試7次(70,71,72,73,74,75,76),加上第1個雞蛋測試的 7次(14,27,39,50,60,69,77),最壞情況只需要測試14次即可得出答案。

the puzzle of eggs and floors

一道有趣的面試題

日前在網上看到一道 面試題。頗有意思,也細細的研究一番。現將該題發布於此,和各位交流一下。某幢大樓有100層。你手裡有兩顆一模一樣的玻璃珠。當你拿著玻璃珠在某一層往下扔的時候,一定會有兩個結果,玻璃珠碎了或者沒碎。這幢大樓有個臨界樓層。低於它的樓層,往下扔玻璃珠,玻璃珠不會碎,等於或高於它的樓層,扔...

一道有趣的面試題

今天去智聯招聘面試他們資料分析師的時候,部門boss給我出了三道題,前兩道暫且不提,第三道很有意思,作文以記之。題目3 到的每層電梯門口都放著一顆鑽石,鑽石大小不一 各不相同 你乘坐電梯從到,每層樓電梯門都會開啟一次,只能拿一次鑽石且沒有掉頭向下的機會,問怎樣才能拿到 最大 的一顆?讀完題目我第一反...

一道面試題

一道面試題 射擊運動員10發打中90環有多少種可能,請編寫程式計算出來,並列印出結果,0環和10環均有效。打中90環就是沒打中10環,所以打中90環跟打中10環的可能性是一樣的。然後開始遞迴狂打槍,一到10就記錄 if params i 10 在迴圈的控制中已經排除了大於10的可能性 i 10 pa...