乙個樓層有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次就可以.並且設第一 個手機的序列是
顯然,一定要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)分析
一樣地,設第乙個手機的序列是
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.(這其實是乙個遞迴的過程)
說明:
如果有問題可以提問.
100樓層2個手機問題及其推廣 百度面試題目
乙個樓層有100層,已知手機在其中的某一層摔下就會壞,現在有兩個一樣的手機,請問,最少能摔幾次保證一定找出那個極限的樓層值.從101層掉下必壞 我們把有n個手機的問題用q n 表示,下面將分別考慮問題.問題 所謂的最少次數是什麼意思 分析 所謂的最少次數是指要給出乙個演算法,按照這個演算法,無論如何...
2個雞蛋100樓問題
兩個軟硬程度一樣但未知的雞蛋,它們有可能都在一樓就摔碎,也可能從一百層樓摔下來沒事。有座100層的建築,要你用這兩個雞蛋確定哪一層是雞蛋可以安全落下的最高位置。可以摔碎兩個雞蛋。最少需要幾次測試,才能得到摔碎雞蛋的樓層?方案如何?對於這個問題,如果從程式設計角度而言,最簡單的思路是用動態規劃的思想來...
面試題目 2個雞蛋100層樓問題
最樸素的做法是從100層一直扔到 層,不過這樣明顯不是最優的。這題目其實可以轉化為dp求解,假設有 層,你隨機選了一層 如果雞蛋碎了,那麼你只剩乙個雞蛋了,為了確保能夠找到臨界高度,你不得不從第一層往上一層一層扔剩下的乙個雞蛋。如果沒碎呢,你還剩 個雞蛋,但你已經用了一次測試機會。這時候的次數應該為...