a095: 麥哲倫的陰謀
內容
在禁忌的貝殼城裡存在著一座監獄
有 N 個犯人被關在裡頭
我們只知道 …..
“他們都帶著帽子”
這是一頂神奇的帽子
稱作 “廬山帽”
是貝殼城裡的特產
分為紅色及白色兩種
凡是帶上 “廬山帽” 的人 ……
就會 “不識廬山真面目” !!!!
而監獄內的所有犯人都被配帶了這一頂可怕的帽子 0.0
而邪惡的所長麥哲倫想到了一個邪惡又沒有良心的鬼計畫:
“ 猜帽子 “
只要能猜出自己的帽子顏色即可立即出獄
但猜錯者須以死謝罪
而你可以假設監獄裡的犯人都跟羅賓一樣絕頂聰明
不會有想要以死謝罪的白痴行為
因此
在 N 個犯人的監獄中,麥哲倫所長將 M 頂紅帽配給其中的犯人
請問最少需要幾天,監獄內的所有犯人均可以確定自己的帽子顏色後出獄
PS. 犯人並不知道共有幾頂紅帽,只知道紅帽至少有一頂,而且不可互相討論 = =
輸入
輸入兩數 N,M (1 < M <= N < 231)
代表 N 個犯人,M 頂紅帽
10 1
10 2
輸出
輸出最少幾天所有犯人均可以確定自己的帽子顏色後出獄
2
3
解題思路
重點在紅帽的數量,白帽不會影響邏輯判斷
如果只有 1 頂,紅帽人看到其他人都是白帽,就能確定自己是紅帽,他就能確定自己是紅帽離開。
第 2 天白帽人發現戴紅帽人走了,就能確定自己是白帽離開。如果有 2 頂,紅帽人的只會看到 1 個人戴紅帽(另一個在他頭上)。
第 2 天,紅帽人發現另一個戴紅帽的不走 = 有人也戴紅帽,但剩下的都是白帽人,所以自己頭上的一定是紅帽,兩個紅帽人的就能確定自己是紅帽離開。
第 3 天,白帽人發現戴紅帽人走了,就能確定自己是白帽離開。如果有 3 頂,紅帽人的就會看到 2 個人戴紅帽(最後一個在他頭上)。
第 2 天,(不重要)
第 3 天,這時候紅帽人會發現如果自己戴的是白帽,那看到的兩個紅帽人所看到的情況應該是”狀況 2”,但他們第 2 天都沒有離開,代表還有人戴紅帽,但剩下的都是白帽人,所以自己頭上的一定是紅帽,三個紅帽人的就能確定自己是紅帽離開。
第 4 天,白帽人發現戴紅帽人走了,就能確定自己是白帽離開。之後情況同理類推。
觀察上面的情況可以發現,紅帽人能確認自己是紅帽並離開的天數是他”看見”的紅帽數 + 1,白帽人能確認自己是白帽並離開的天數是他看見紅帽人離開的天數 + 1,而紅帽人”看見”的紅帽數 + 1 = 紅帽的總數(看不到自己頭上的),所以可以得到結論:
紅帽人離開天數 = 紅帽數
全部離開天數 = 白帽人離開天數 = 紅帽人離開天數 + 1 = 紅帽數 + 1
唯一要注意的是:如果紅帽數 = 總人數,就不會有白帽人,也就是紅帽人 = 總人數,這時候
全部離開天數 = 紅帽人離開天數 = 紅帽數
完整程式碼
AC (34ms, 100KB)
|