看板 Prob_Solve 關於我們 聯絡資訊
※ [本文轉錄自 Soft_Job 看板 #1JI2zrVk ] 作者: bleed1979 (十三) 看板: Soft_Job 標題: [討論] Google面試問題 時間: Sat Apr 12 02:07:46 2014 問題: 假設你有兩顆蛋,然後有一棟100層樓高的大樓。 而蛋的特性有的可能很堅固,堅固到從一百層樓跌下都沒事, 有的可能很脆弱,一樓就可以摔破。 現在你只知道這這兩顆蛋是完全相同的, 你想要知道蛋最高從哪一層樓摔下來不會摔破。 問題是:你要摔幾次才能計算出來? (如果你低於高度摔下蛋,蛋就沒事,如果高於那個樓層,蛋就完蛋) 在這過程你可以摔破蛋。 --- 以下是完全不經大腦思考的 rough 策略,有雷 --- http://ideone.com/B7E85H 策略是: 當我還有兩次機會時,我使用二分法。 當我只剩一次機會時,選擇已經安全的樓層 + 1。  附上此策略的解答 樓層 => 次數 1=>3 2=>4 3=>5 4=>6 5=>7 6=>8 7=>9 8=>10 9=>11 10=>12 11=>13 12=>14 13=>15 14=>16 15=>17 16=>18 17=>19 18=>20 19=>21 20=>22 21=>23 22=>24 23=>25 24=>26 25=>27 26=>28 27=>29 28=>30 29=>31 30=>32 31=>33 32=>34 33=>35 34=>36 35=>37 36=>38 37=>39 38=>40 39=>41 40=>42 41=>43 42=>44 43=>45 44=>46 45=>47 46=>48 47=>49 48=>50 49=>50 50=>3 51=>4 52=>5 53=>6 54=>7 55=>8 56=>9 57=>10 58=>11 59=>12 60=>13 61=>14 62=>15 63=>16 64=>17 65=>18 66=>19 67=>20 68=>21 69=>22 70=>23 71=>24 72=>25 73=>26 74=>26 75=>4 76=>5 77=>6 78=>7 79=>8 80=>9 81=>10 82=>11 83=>12 84=>13 85=>14 86=>15 87=>15 88=>5 89=>6 90=>7 91=>8 92=>9 93=>9 94=>6 95=>7 96=>7 97=>7 98=>7 99=>7 100=>7 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.135.203.156 ※ 文章網址: http://www.ptt.cc/bbs/Soft_Job/M.1397239669.A.7EE.html ※ 發信站: 批踢踢實業坊(ptt.cc) ※ 轉錄者: bleed1979 (220.135.203.156), 04/12/2014 02:08:15
LPH66:其實有比二分法更好的答案...提示: 那個 50 其實很容易變小 04/12 06:33
LPH66:沿著這個變小的思路就會得到最佳解了 04/12 06:35
testPtt:期望值應該都是51次 04/12 09:22
testPtt:想想開方根好像比較正確:19次 04/12 09:44
tjjh89017:我的策略跟樓上一樣@@ 但是聽說有更小的@_@ 04/12 12:27
dozyclover:14次 f(0)=0 f(n)=max(j-1,f(i-j))+1, 1<=j<=n 04/12 14:36
dozyclover:f(n)=min(max(j-1,f(i-j))+1), 1<=j<=n 這樣才對QQ 04/12 15:27
dozyclover: n 一直打錯 04/12 19:04
guest2:10次 04/13 00:16
guest2:破1顆後step可以是2 04/13 00:22
guest2:不對 我錯了= = 04/13 00:31
FRAXIS:看wikipedia的dynamic programming裡面就有解答了.. 04/13 07:41
DJWS:想請教有沒有O(n)的方法,甚至是低於O(n)的方法? 04/20 18:12