这是一个二元逻辑问题。关键在于逻辑等式 非对 = 错。
应用到本题即 非红 = 蓝
囚犯1运气最差,必需猜测自己帽子的颜色。仅有50%生存机会。他在回答自己帽子颜色的同时要让囚犯2知道其帽子颜色。
比如,囚犯1猜测自己帽子是红色, 而他看到囚犯2帽子颜色为红色, 责他可以说“我的帽子是红色”。其意味是两帽子都是红色。
如果他看到囚犯2帽子颜色为蓝色,责他可以说“我的帽子不是蓝色”。其意味是自己帽子是红色,而下面一位的帽子是蓝色。
如此相传,余下99个囚犯均能安全获救.
此题的陷阱在给出了充分不必要条件 - 每个囚犯能看到过多的帽子。所以有人给出计算奇偶数的解法,并受到一小撮人追捧.从算法可执行性角度这是不可取的.囚犯要经过大量计算才能保命,但是不是每个囚犯都是数学好的.如果放大计算难度,1000名囚犯,则这个算法仅仅理论可行,而不具备实践意义。
从计算科学角度分析,我给出的算法复杂度(O(N))低并且保持稳定效能.而后者是O(N*N)的复杂度.