百度面試題 :玻璃球 臨界值

 題目如下:“有一個100層高的大廈,你手中有兩個相同的玻璃圍棋子。從這個大廈的某一層扔下圍棋子就會碎,用你手中的這兩個玻璃圍棋子,找出一個最優的策略,來得知那個臨界層面。”


解答:

(1)等分段求最小值:這種算法先假設把大樓分成等高的 x 段,這樣在最差的情況下,要確定臨界段,我們需要投擲 100/x-1 次,確定了臨界段之後要確定臨界層,我們需要再投擲 x-1 次。這樣,問題就成了求函數 f(x)=(100/x-1)+(x-1) 的最小值問題。由於 f(x) 存在最小值且只有一個駐點,所以當 x=10 時 f(x) 取得最小值,最小值爲18。

(2)上述解法並不是最優的,隨着臨界段的提高,我們搜索臨界段的次數增加,但是在臨界段內搜索臨界層的次數卻是一個常數,所以臨界段越高,總的搜索次數就越多。那麼我們能不能這麼考慮,隨着臨界段搜索次數的增加(每次增加1),如果我們能夠讓在此臨界段內搜索臨界層的搜索次數減1,那麼就可以保證在任何一個臨界段,搜索次數都保持不變。設第一次投擲從第x層開始,那麼在第一個臨界段內搜索臨界層的次數總和是 1+(x-1)=x。爲了保證第2次總的搜索次數也爲x,我們設第二次從第y層開始,要求:1+(y-x)=x,從而y=2x-1  (2x=x+(x-1))。第三次搜索從z開始,爲保證總的搜索次數也爲x,要求:2+(z-(2x-1))=x,從而z=3x-3  (z=x+(x-1)+(x-2)),以此類推,最終的投擲高度:last=x+(x-1)+(x-2)+..1>=100, x=13.6 即14次





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