[CareerCup] 6.5 Drop Eggs 扔雞蛋問題


 

6.5 There is a building of 100 floors. If an egg drops from the Nth floor or above, it will break. If it's dropped from any floor below, it will not break. You're given two eggs. Find N, while minimizing the number of drops for the worst case

 

這道題說有100層樓,從N樓開始扔雞蛋會碎,低於N樓扔不會碎,現在給我們兩個雞蛋,讓我們找到N,並且最小化最壞情況。

因為只有兩個雞蛋,所以第一個雞蛋應該是按一定的間距扔,比如10樓,20樓,30樓等等,比如10樓和20樓沒碎,30樓碎了,那么第二個雞蛋就要做線性搜索,分別嘗試21樓,22樓,23樓等等直到雞蛋碎了,就能找到臨界點。那么我們來看下列兩種情況:

1. 假如臨界點是9樓,那么雞蛋1在第一次扔10樓碎掉,然后雞蛋2依次遍歷1到9樓,則總共需要扔10次。

2. 假如臨界點是100樓,那么雞蛋1需要扔10次,到100樓時碎掉,然后雞蛋2依次遍歷91樓到100樓,總共需要扔19次。

所以上述方法的最壞情況是19次,那么有沒有更少的方法呢,上面那個方法每多扔一次雞蛋1,雞蛋2的線性搜索次數最多還是10次,那么最壞情況肯定會增加,所以我們需要讓每多扔一次雞蛋1,雞蛋2的線性搜索最壞情況減少1,這樣恩能夠保持整體最壞情況的平衡,那么我們假設雞蛋1第一次在第X層扔,然后向上X-1層扔一次,然后向上X-2層扔,以此類推直到100層,那么我們通過下面的公式求出X:

X + (X-1) + (X-2) + ... + 1 = 100 -> X = 14

所以我們先到14樓,然后27樓,然后39樓,以此類推,最壞情況需要扔14次。


免責聲明!

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



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