標題

Re: [討論] Google面試問題

(25/31篇)
看板Soft_Job軟工板作者cyclone350 (老子我最神)
時間 (2014-04-18 16:54:15)
推文4則 (3推 0噓 1→)
打在記事本後再貼上的,怕斷線

================================================

我解出來了,若有錯誤請多指教...

不過基本上我認為我得答案是對的 XD


首先,假設有一層樓,"最低的 worst case"  就是 1
若是有兩層樓,"最低的 worst case" 就是 2

我們定義一個 f(x) 代表從 x 層丟下去"最低的 worst case"

我們已知

f(1) = 1
f(2) = 2

而 f(3) 等於多少呢?

我們已知計算"最低的 worst case"的演算法絕對不可能從一層一層丟下去

否則 f(n) 就會是 n。

所以當從中間丟第一顆蛋下去,則接下來會被切成兩個情況

破掉 = > f(1)
沒破掉 => 1

所以 f(3) = min( f(1), 1 ) + 1 = 2

接下來計算 f(4)

若從中間丟下去,可以從第二層丟或是第三層丟,所以會被分成以下情況

若從第二層丟 =>
    沒破 => f(2)
        破     => 1

所以如果我們從第二層丟,所得到的"最低 worst case" = Max(f(2), 1) + 1 = 3

若從第三層丟 =>
    沒破 => f(1)
        破     => 2

所以"最低 worst case" = Max(f(1), 2) + 1 = 3

所以 f(4) = min( Max(1,f(2)), Max(f(1),2) ) + 1
               = 2 + 1 = 3


根據以上情況可以看出幾個公式

1. f(n) >= f(n-1)

2. f(n) = min( x=1..(n-1)  Max(f(x), (n-x-1)) ) + 1

3. f(n) <= n

用公式三可以判端出

Max( f(1), 2 ) = 2
Max( 1, f(2) ) = 不確定

所以 min( Max(1,f(2)), Max(f(1),2) ) = min( Max(1,f(2)), 2 )

我們已知 f(2) <= 2

所以 f(3) 可以簡化成 min(Max(1,f(2)))

另外可以對公式二進行簡化成公式四

4. f(n) = min( x=1..((n-1)/2)  Max( x, f(n-x-1) )  ) + 1

帶入此公式可以算出 { 若 x = f(n-x-1) ,則定義 Max(x, f(n-x-1)) = x ||
f(n-x-1) }

f(3) = min(1) + 1 = 2
f(4) = min(f(2)) + 1 = 3
f(5) = min(f(3), 2) + 1 = 3
f(6) = min(f(4), f(3) || 2) + 1 = 3
f(7) = min(f(5), f(4), 3) + 1 = 4
f(8) = min(f(6), f(5), f(4) || 3) + 1 = 4
f(9) = min(f(7), f(6), f(5) || 3, 4) + 1 = 4
f(10) = min(f(8), f(7), f(6), 4) + 1 = 4

由以上可判斷出每一個 f(n) 有一個值  λ ,若 x < λ ,則 min(x, f(n-x-1)) =
f(n-x-1)
若 x >= λ,則min(x, f(n-x-1)) = x

所以可以推出公式五

5. f(n) = min( f(n-2), f(n-3), ... ,  f(n-λ), λ, (λ+1), (λ+2), ... ) + 1

由公式五可以看出來,min( f(n-2), f(n-3), ... ,  f(n-λ), λ, (λ+1), (λ+2),
... ) =  min(λ, f(n-λ))

藉由之前λ定義可以看出

f(n-λ) > λ-1

因為f(n-λ)是正整數,所以可以推論出 f(n-λ) >= λ


所以 min( f(n-2), f(n-3), ... ,  f(n-λ), λ, (λ+1), (λ+2), ... ) = λ

因此推導出公式六

6. f(n) = λ+1

接下來,因為 f(n) = λ+1,所以 min(f(n), λ+1) = λ+1

有公式五跟公式六可以推導出公式七

7. f(n+f(n)) = f(n) + 1

所以可以推出

f(1+f(1))  = f(2)   = f(1) + 1 = 2
f(2 +f(2)) = f(4)   = f(2) + 1 = 3
f(4 +f(4)) = f(7)   = f(4) + 1 = 4
f(7 +f(7)) = f(11)   = f(7) + 1 = 5
f(11 +f(11)) = f(16) = f(11) + 1 = 6

可看出這是一個遞增公式

f(1) ~ f(20) 分別為
1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6

雖然知道這是怎麼出來的,但是我公式寫不出來,不知道要用啥符號 @@


所以可以導出, 若"worst case" 若為 t

則樓層最高為 (1+t)t/2 (梯形公式) ,最低為 t(t-1)/2 + 1


所以若100樓所能導出的 "最低 worst case" 為 14

因為 100 介於 91 ~ 105 之間


至於要怎麼丟,寫個 recusive 應該就能跑出來了


感覺繞了一大圈遠路才算出來 @@--
※ 發信站: 批踢踢實業坊(pttweb.tw), 來自: 61.218.64.133
※ 文章網址: https://pttweb.tw/Soft_Job/M.1397811257.A.34C
#1
:兩樓..我在2樓破 代表一樓是答案 所以....04/18 19:24
#2          不懂為什麼你要定義那個04/18 19:25
#3
:誰說一層樓就不會破04/18 20:00
#4
:抱歉阿 提目搞錯了04/18 20:04
※ 編輯: cyclone350 (123.193.201.124), 04/18/2014 21:30:43
※ 編輯: cyclone350 (123.193.201.124), 04/18/2014 21:42:15
※ 編輯: cyclone350 (123.193.201.124), 04/18/2014 22:03:46

同標題文章

  1. 18
    [討論] Google面試問題
    Soft_Job軟工板 @bleed19792014-04-12
  2. 8
    Fw: [討論] Google面試問題
    Prob_Solve板 @bleed19792014-04-12
  3. 17
    Fw: [討論] Google面試問題
    Tech_Job科技板 @bleed19792014-04-12
  4. 1
    Re: [討論] Google面試問題
    Tech_Job科技板 @Domos2014-04-12
  5. Re: [討論] Google面試問題
    Tech_Job科技板 @cdmdrdtw2014-04-12
  6. 7
    Re: [討論] Google面試問題
    Soft_Job軟工板 @evanslee2014-04-12
  7. 4
    Re: [討論] Google面試問題
    Tech_Job科技板 @tiwei2014-04-12
  8. 8
    Re: [討論] Google面試問題
    Soft_Job軟工板 @hweric2014-04-12
  9. 2
    Re: [討論] Google面試問題
    Tech_Job科技板 @sapdavid2014-04-12
  10. 3
    Re: [討論] Google面試問題
    Tech_Job科技板 @eetug2014-04-12
  11. Re: [討論] Google面試問題
    Soft_Job軟工板 @bndan2014-04-12
  12. -2
    Re: [討論] Google面試問題
    Tech_Job科技板 @Munro2014-04-12
  13. 2
    Re: [討論] Google面試問題
    Soft_Job軟工板 @aknow2014-04-13
  14. -4
    Re: [討論] Google面試問題
    Tech_Job科技板 @artingo2014-04-13
  15. 3
    Re: [討論] Google面試問題
    Tech_Job科技板 @sapdavid2014-04-13
  16. Re: [討論] Google面試問題
    Tech_Job科技板 @prpure2014-04-13
  17. Re: [討論] Google面試問題
    Soft_Job軟工板 @Domos2014-04-14
  18. 1
    Re: [討論] Google面試問題
    Soft_Job軟工板 @minejel2014-04-14
  19. 6
    Re: [討論] Google面試問題
    Soft_Job軟工板 @istoday2014-04-15
  20. 4
    Re: [討論] Google面試問題
    Soft_Job軟工板 @howdiun2014-04-15
  21. 6
    Re: [討論] Google面試問題
    Soft_Job軟工板 @realboy19772014-04-16
  22. 1
    Re: [討論] Google面試問題
    Soft_Job軟工板 @leoace2014-04-17
  23. 2
    Re: [討論] Google面試問題
    Soft_Job軟工板 @howdiun2014-04-17
  24. 1
    Re: [討論] Google面試問題
    Soft_Job軟工板 @h5202014-04-17
  25. 3
    Re: [討論] Google面試問題
    Soft_Job軟工板 @cyclone3502014-04-18
  26. Re: [討論] Google面試問題
    Soft_Job軟工板 @Lordaeron2014-04-18
  27. 2
    Re: [討論] Google面試問題
    Soft_Job軟工板 @karcher2014-04-20
  28. Re: [討論] Google面試問題
    Soft_Job軟工板 @lovdkkkk2014-04-21
  29. 4
    Re: [討論] Google面試問題
    Soft_Job軟工板 @cyclone3502014-04-21
  30. 4
    Re: [討論] Google面試問題
    Soft_Job軟工板 @IhateOGC2014-04-22
  31. 4
    Re: [討論] Google面試問題
    Prob_Solve板 @johnathan7172014-04-22

相關文章


Soft_Job熱門文章