算法-粗調和精調

2個球,100層樓,某一 層扔下會碎掉,怎麼最快測出會碎掉的層數?

這實際上是個查找算法。如果球的數量不限制,那就是二分法查找了。

先粗調,從每隔m層扔下,測出大致範圍,再每層測試,那麼最大的次數:100/m + m-2,顯然m應該是10. 

考慮到m可能不被100整除,最優的應該是7!  實際9 也是一樣,8和10 一樣 。 實際的扔法,應該第一輪測試的最後一個次就不測了。比如m=10,第100 層應該不測,這樣還能減少一次測試。

最終精確的公式:(100-m)/m +m-2。

還有更優化的。最終的結果14次就可以。

如果3個球呢?第二個球每隔n層扔,一共次數:(100-m)/m + (m-n)/n + n-2  看看是多少?

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章