有一棟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