內容
在禁忌的貝殼城裡存在著一座監獄
有N個犯人被關在裡頭
我們只知道 .....
"他們都帶著帽子"
這是一頂神奇的帽子
稱作 "廬山帽"
是貝殼城裡的特產
分為紅色及白色兩種
凡是帶上 "廬山帽" 的人 ......
就會 "不識廬山真面目" !!!!
而監獄內的所有犯人都被配帶了這一頂可怕的帽子 0.0
而邪惡的所長麥哲倫想到了一個邪惡又沒有良心的鬼計畫:
" 猜帽子 "
只要能猜出自己的帽子顏色即可立即出獄
但猜錯者須以死謝罪
而你可以假設監獄裡的犯人都跟羅賓一樣絕頂聰明
不會有想要以死謝罪的白癡行為
因此
在N個犯人的監獄中,麥哲倫所長將M頂紅帽配給其中的犯人
請問最少需要幾天,監獄內的所有犯人均可以確定自己的帽子顏色後出獄
PS. 犯人並不知道共有幾頂紅帽,只知道紅帽至少有一頂,而且不可互相討論 = =
輸入說明 輸出說明
輸入兩數N,M (1 < M <= N < 231) 輸出最少幾天所有犯人均
代表N個犯人,M頂紅帽 可以確定自己的帽子顏色後出獄
c++解答
//思考方式參見下文
#include <iostream>
using namespace std;
int main ()
{
int in1,in2;
while(cin>>in1>>in2)
{
if(in1==in2)
{
cout<<in2<<endl;
}
else
{
cout<<in2+1<<endl;
}
}
return 0;
}
思考方式
一頂紅色帽子情況下,請看題目給的說明。
兩頂紅帽情況下。
我戴什麼不知道,只看到一頂紅帽。
第二天那頂紅帽卻沒有離開,我知道他看到的一定不是全部都是白帽,於是我知道我戴的也是紅帽。
而那頂紅帽也跟我一樣的想法,所以我們兩個都知道自己是紅帽,就離開了。
第三天,紅帽都離開了,大家就知道自己是白帽,也都離開了。
三頂紅帽的情況下。
我戴什麼不知道,看到兩頂紅帽。
按照如果只有兩頂紅帽的情況,他們第二天應該會離開,但到了第三天都沒離開。
所以我知道他們兩個看到的一定不是只有一頂紅帽,所以我知道了自己是紅帽。
而另外兩個也是同樣想法,所以第三天紅帽就都離開了。
第四天,大家看到紅帽都離開了,知道了自己是白帽,也都離開了。
所以假設有X頂紅帽,全部犯人最晚會在X+1天知道自己的帽色。
但如果全部都是紅帽沒白帽,就會在X天知道自己的帽色。
請先 登入 以發表留言。