一個樓層有100層,已知手機在其中的某一層摔下就會壞,現在有兩個一樣的手機,請問,最少能摔幾次保證一定找出那個極限的樓層值.(從101層掉下必壞).
我們把有n個手機的問題用Q(n)表示,下面將分別考慮問題.
問題:
所謂的最少次數是什麼意思
分析:
所謂的最少次數是指要給出一個演算法,按照這個演算法,無論如何都能保證在給定的步數內找出來(不論這個手機的極限層樓是幾樓).有些同學可能說最少是1次,因為比如我第一次從1樓把手機向下丟下去,並且手機壞了,則說明只需要最少一次.其實,這並不是題目所說的最少的意思.如果第一次從1樓丟下去,並且手機不壞呢?這樣還是一次麼?所以說,最少一次是根本不成立的.要明白最少次數的意思,並不是說在某一次特例中成立的最少次數(一定是1),而是說,要保證在那個求出的最少次數之內一定能找出那個極限的樓層值(而不論它是多少).
題目隱含的資訊:
題目中其實隱含著一個重大的資訊,就是如果手機沒有壞的話,就能再用它來摔第二次,如果壞了就不能用了.因為無法通過摔一個壞手機判斷當前摔下的樓層是否超過最大的那個極限值.
Q(1) 分析:
當只有一個手機的時候,我們顯然只能從1樓開始一層一層地試,在最差的情況下一直要到100層,也就是說,我們的Q(1)=100.為什麼呢,顯然,如果我們在某一次從
x樓丟下手機,並且手機沒壞,則下一次的時候我們丟的樓層肯定要大於x(否則沒有意義的,因為在 x樓都沒有壞,則小於x樓也不會壞的).並且,肯定不會大於 x+1,否則設下一次丟的樓層是 y(y>x+1),如果下一次在y層丟下的時候手機壞了,此時我們無法判斷是x+1,x+2......y-1 這y-x-1( 大於1)個樓層中的哪一個樓層是手機的極限值,因為我們已經沒有手機了.
所以,如果只有一個手機的時候,我們只能依次從1到100一次一次地丟.換句話說,如果我們知道手機在x和y層中的某一層丟下會壞,則我們只有從 x到y一個一個地試,也就是說,要測試y-x+1次.我們設有k個手機,且允許麼t次可以確定的手機的極限樓層的範圍是F(k,t),則知F(1,t)=t.(由上的討論可知).
Q(2)分析:
我們不妨設最丟n次就可以.並且設第一 個手機的序列是(這裡假設的是如果第一個手機一直沒有壞,如果它在Xk那裡壞了,則不再使用第一個,此時已經知道了手機在X(k-1)和X(k)層之間壞掉的.
顯然,一定要X(k)-X(k-1)+k<=n,因為,如果第一個手機在丟X(k)層是壞掉了,則知道手機是在[X(k-1)+1,
X(k)]之間的的某一個樓層壞掉了或者都沒有壞掉,即我們遍曆一下即可,此時因為此剩下一個手機,所以一定要丟X(k)-X(k-1)次,另外由於從X1一直丟到X(k),第一個手機已經丟了k次,所以總共丟了X(k)-X(k-1)+k次,因為已經假設了最少n次可以搞定,所以有X(k)-X(k-1)+k<=n.於是知道X(k)<=n+(n-1)+(n-2)+...+(n-k+1)顯然X序列一定要不小於100,也就是說n+(n-1)+(n-2)
+...+1>=100,即最小的n要滿足n>=14, 得到了第一個手機丟的序列是14, 27, 39, 50, 60, 69, 77, 84, 90, 95, 99, 100,這樣,可以知道手機如果第一次就壞了,則用第二個手機在[1,13]之間丟13次再加上第一個手機1次,共14次.在27時壞一樣的有12+2.....
根據以上分析,有F(2,t)=t*(t+1)/2;即2個手機丟t次可以確定的範圍是t*(t+1)/2,所以最少的次數要滿足t*(t+1)/2>=100.
Q(3)分析
一樣地,設第一個手機的序列是同樣地設n次是最少的,則由於F(2,t)=t*(t+1)/2,則有X(k)-X(k-1)<=F(2,
n-k+1),即知F(3,t)=F(2,t)+F(2,t-1)+F(2,t-2) +.....F(2,1),最後得到的最少的滿足
F(3,t)>=100 的t即是所求的.
..............
Q(m)分析
一樣地,有F(m,t)=F(m-1,t)+F(m-1, t-1)+ F(m-1, t-2)+...+F(m-1,1),並且,最少的次數也是最少的滿足F(m,t)>=100的t.(這其實是一個遞迴的過程)
說明:
轉載請標明出處,這是作者自己研究出的結果,不是轉自其它地方的哦.
如果有問題可以提問.