這是一個二元邏輯問題。關鍵在於邏輯等式 非對 = 錯。
應用到本題即 非紅 = 藍
囚犯1運氣最差,必需猜測自己帽子的顏色。僅有50%生存機會。他在回答自己帽子顏色的同時要讓囚犯2知道其帽子顏色。
比如,囚犯1猜測自己帽子是紅色, 而他看到囚犯2帽子顏色為紅色, 責他可以說“我的帽子是紅色”。其意味是兩帽子都是紅色。
如果他看到囚犯2帽子顏色為藍色,責他可以說“我的帽子不是藍色”。其意味是自己帽子是紅色,而下麵一位的帽子是藍色。
如此相傳,餘下99個囚犯均能安全獲救.
此題的陷阱在給出了充分不必要條件 - 每個囚犯能看到過多的帽子。所以有人給出計算奇偶數的解法,並受到一小撮人追捧.從算法可執行性角度這是不可取的.囚犯要經過大量計算才能保命,但是不是每個囚犯都是數學好的.如果放大計算難度,1000名囚犯,則這個算法僅僅理論可行,而不具備實踐意義。
從計算科學角度分析,我給出的算法複雜度(O(N))低並且保持穩定效能.而後者是O(N*N)的複雜度.