有一棟100層高的大樓,給你兩個完全相同的玻璃球。假設從某一層開始,丟下玻璃球會摔碎。那麼怎麼利用手中的兩個球,用什麼最優策略知道這個臨界的層是第幾層???
仔細想想,這兩個題一樣吧~~。下面我借助別人的分析我來仔細分析一下。
每次肯定是由低的樓層往高的樓層嘗試,直到在樓層f(k),第乙個球已經碎掉了,記錄上乙個嘗試的樓層為f(k-1),在此樓層,玻璃球不會碎,所以接下來要嘗試 f(k-1)+1,f(k-1)+2,f(k-3)+3, ....,知道有乙個樓層碎了,這個樓層就是解啦,最壞的是到達f(k)-1 層。
以下分析**:
接下來的解決方案就很容易想出了:既然第一步(確定臨界段)的投擲數增加不可避免,我們就讓第二步(確定臨界層)的投擲數隨著第一步的次數增加而減少。第一步的投擲數是一次一次增加的,那就讓第二步的投擲數一次一次減少。假設第一次投擲的層數是f,轉化成數學模型,f+(f-1)+...+2+1就表示從f開始猜,每次的增量都比前一次的曾量減1的情況下,最後猜的那個數(即 f+(f-1)+...+2+1 ),按照提議要求f+(f-1)+...+2+1>=99,即f(f+1)/2>=99(第一次測試點選擇100層是無意義的,必然會碎,所以無任何測試價值,所以第一次測試點k是1-99中的乙個數),解出結果等於14。丟下第一顆雞蛋的樓層就分別是 14 , 27 , 39 , 50 , 60 , 69 , 77 ,84 , 90 , 95 , 99 。
分析:我來解釋乙個不等式右側為什麼是99呢,其實使用99還是100最後結果是一樣的,只不過99說明理解的深刻,因為如果你都已經到了99層了,可以玻璃球還是沒有碎,那麼答案就肯定是100啦,所以100就不用猜了,如果面試的時候說一下這個99和100的關係,就說明你夠聰明,至於到底用100還是99,看考官吧,不同的人理解不一樣。
首次選擇14,那麼最高可以判斷到呢,按照上面的遞減數列,14 , 27 , 39 , 50 , 60 , 69 , 77 ,84 , 90 , 95 , 99 ,102,104,105。一共是14次,最後是到105了,按照上面99和100的分析,雖然是14次猜,但是最後乙個猜到了105,可知如果105還是不碎的話,那麼肯定是106,106是鐵定的了,不用猜了就知道,所以14次最大可以判斷到106,這樣15次的話就要從15開始猜,並且如果107層的話,那麼需要15次。
比如到27層,玻璃碎了,則要從15開始一層一層的嘗試,比如26是解的話,那麼猜的序列就是 14,27,15,16,17,18,19,20,21,22,23,24,25,26,一共14次。
100層樓和兩個玻璃球
有一棟100層高的大樓,給你兩個完全相同的玻璃球。假設從某一層開始,丟下玻璃球會摔碎。那麼怎麼利用手中的兩個球,用什麼最優策略知道這個臨界的層是第幾層?投擲次數分布不均。按最壞情況估計,這種方法就多做了幾次。為了使最壞情況的投擲數最小,我們希望無論臨界段在 總的投擲數都不變,也就是說投擲數均勻分布。...
100層樓和兩個玻璃球
有一棟100層高的大樓,給你兩個完全相同的玻璃球。假設從某一層開始,丟下玻璃球會摔碎。那麼怎麼利用手中的兩個球,用什麼最優策略知道這個臨界的層是第幾層?投擲次數分布不均。按最壞情況估計,這種方法就多做了幾次。為了使最壞情況的投擲數最小,我們希望無論臨界段在 總的投擲數都不變,也就是說投擲數均勻分布。...
100層樓和兩個玻璃球
有一棟100層高的大樓,給你兩個完全相同的玻璃球。假設從某一層開始,丟下玻璃球會摔碎。那麼怎麼利用手中的兩個球,用什麼最優策略知道這個臨界的層是第幾層?投擲次數分布不均。按最壞情況估計,這種方法就多做了幾次。為了使最壞情況的投擲數最小,我們希望無論臨界段在 總的投擲數都不變,也就是說投擲數均勻分布。...