2個雞蛋,有一棟100層的高樓,雞蛋從某一個臨界樓層丟下會摔碎,請設計方案,能用最小的次數找到臨界樓層


 

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

 

  如果只有一個雞蛋,就只能從第1層逐層往上扔,最壞的情況下,要99次(假如99層還沒碎,則是100層)

  如果有兩個雞蛋,則第一個雞蛋用來縮小查找的范圍,因而把100層分成若干段,先利用一個雞蛋來確定臨界層所在的段,再利用另一個雞蛋確定臨界層,關鍵點在於如何分段。

  比如說,每10層分一段,10,20,30...90,一共扔9次,在第90層碎了,那么第二雞蛋從81到89,最壞的情況下還得扔9次,這種分段法不一定是最優的。

  假設最壞的情況下,最少要x次才能找到臨界樓層

    如果在x層扔了后,沒碎,則往上,到x+(x-1)層去扔,還沒碎,則到x+(x-1)+(x-2)層去扔

    如果在x層扔了后,碎了,則在1~x-1逐層往上扔

  那么為什么是x+(x-1)層,這里假設x是10,x+(x-1)=19,在10,19層各扔一次,一共兩次,11-18,最壞的情況下要8次,8+2正好=10

  所以只要解出x+(x-1)+(x-2)+...+1>=100就行了,x最小為14


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM