擲杯問題 - 推理遊戲

Sandy avatar
By Sandy
at 2009-06-16T19:34

Table of Contents

※ 引述《teves (teves)》之銘言:
: ※ 引述《brains (不認識)》之銘言:
: : 一種杯子,
: : 若在第 N 層被摔破, 則在任何比 N 高的樓層均會破;
: : 若在第 M 層不破, 則在任何比 M 低的樓層均不破.
: : 現在給你兩個這種杯子, 讓你在100層樓高的建築作測試, 要求用最少的測試次數找出
: : 恰巧會使杯子摔破的樓層.
: : ---------------------------
: : 這問題若po過我會自D
: 以最大試驗次數最小來看
: 我認為是先丟
: 14,27,39,50,60,69,77,84,90,95,99這幾層直到破
: 另一個杯子依序試中間的區段
: 最多14次

這題可以換一種想法,

如果你有 k 個杯子,而且你可以做 t 次實驗, ( k,t>=1 )

(也就是你最多可以讓杯子破 k 次,你最多可以丟 t 次杯子)

定義一個 function f(k,t) 代表此狀態下最多可以確定多少層樓

Ex f(1,t) 時,因為我們只有一個杯子,

破了就沒了,所以只能從 1F , 2F 慢慢往上試,

直到破了或是 t 次機會都用掉為止

因此最多可以確定 t 層樓 => f(1,t)=1

另外,t=1的時候,因為只能丟一次,所以只能確定一層樓

f(k,1)=1


這樣的話,當我們有 k 個杯子 可以做 t 次實驗時

應該要從幾樓丟下去呢?

若 f(k-1,t-1) = a , f(k,t-1) = b

我們把杯子從a+1樓丟下去,如果破了的話,不用擔心

因為我們可以肯定要找的樓層會落在 1~a 之間,

而且我們知道用 k-1 個杯子,做 t-1 次實驗可以找到 1~a 之間的某一樓

如果沒破,那代表我們要找的樓層比 a+1 還要來的高

另外,我們用 k 個杯子,做 t-1 次實驗,可以找到 1~b 之間的某一樓

但是現在的起點由 a+1 開始算,因此可以確定 (a+2)~(b+a+1) 之間的某一樓

所以我們知道 f(k,t) = f(k-1,t-1) + f(k,t-1) + 1

再來就是把表格寫出來囉:


k=1 k=2
----------------------------------
t = 1 1 1
2 2 3
3 3 6
4 4 10
5 5 15
6 6 21
7 7 28
8 8 36
9 9 45
10 10 55
11 11 66
12 12 78
13 13 91
14 14 105 <= 超過 100 了,因此最少做 14 次實驗

用這種方法只有有心,多少個杯子多少層樓都可以算出來~

如果可以解 f(k,t) = f(k-1,t-1) + f(k,t-1) + 1 的遞回式的話,

當然可以算得更快~


--

All Comments

Joe avatar
By Joe
at 2009-06-19T08:38
推 讓我想到正在修的演算法
Erin avatar
By Erin
at 2009-06-23T20:25
其實ACM有一題跟這個一模一樣,只是 n 可以到 2^63
Hedy avatar
By Hedy
at 2009-06-28T13:06
Good!
Joseph avatar
By Joseph
at 2009-06-30T10:42
這個解法好標準,真厲害!!
Hedy avatar
By Hedy
at 2009-07-01T23:17
順便徵求一下有人有比較跳脫正常思維的解法嗎?
Margaret avatar
By Margaret
at 2009-07-03T14:16
我有想過把兩個杯子用一條長繩子綁住,繩長x樓之類的= =
Anonymous avatar
By Anonymous
at 2009-07-03T19:56
回樓上,有,我就這麼想過...顆顆

擲杯問題

Lucy avatar
By Lucy
at 2009-06-15T12:00
※ 引述《brains (不認識)》之銘言: : 一種杯子, : 若在第 N 層被摔破, 則在任何比 N 高的樓層均會破; : 若在第 M 層不破, 則在任何比 M 低的樓層均不破. : 現在給你兩個這種杯子, 讓你在100層樓高的建築作測試, 要求用最少的測試次數找出 : 恰巧會使杯子摔破的樓層. : -- ...

擲杯問題

Jake avatar
By Jake
at 2009-06-15T11:37
一種杯子, 若在第 N 層被摔破, 則在任何比 N 高的樓層均會破; 若在第 M 層不破, 則在任何比 M 低的樓層均不破. 現在給你兩個這種杯子, 讓你在100層樓高的建築作測試, 要求用最少的測試次數找出 恰巧會使杯子摔破的樓層. --------------------------- ...

邏輯小謎題

Olivia avatar
By Olivia
at 2009-06-15T10:35
...

外行問手法-藏兇器於盥洗用品

Erin avatar
By Erin
at 2009-06-09T21:06
我是喜歡看推理劇與推理漫畫的大眾,小說看得不多… 不過如果將來想要轉變興趣的話,研究推理是首選(現主要興趣是日劇) 所以對警察的調查方式並不太清楚,如果問題的程度很底,還請見諒 進入正題~ 如果場景設定在髮廊,裡面理所當然有很多洗髮、潤髮乳等保養品 兇手若暫時將兇器(ex.美工刀)置於其中,甚至是將其做 ...

數字問題

Megan avatar
By Megan
at 2009-06-09T14:56
有一11位數的數字 他乘以4之後 會等於他的逆數字 請問這11位數是多少 (ex: 12345*k=54321) - ...