我認為應該把此問題看成智力題. 所有的值已經輸入計算機, 再限製不能直接給出每個值而是通過計算猜測每個值 ------ 在編程上沒有意義.
次題給出條件: 100個帽子, 有紅有藍(所以不能假定全是紅帽子或藍帽子). 後麵的人可以看見前麵的帽子(方案中後麵的人最好能利用他能看到的信息). 沒有明確提出是否可以用其他條件. 題目的目標是救最多的人.
從目前大家的討論看, 另加條件為: 1)每個人是否可以聽到別人的回答. 2)最後的人是否願意犧牲自己指出紅藍奇偶. 3)回答是否隻能是紅藍或者允許其它回答. 4)是否可以安排帽子的次序.
方案不加任何條件而救出最多的人最好. 或者加的條件越輕越好. 事實上你和612309的方案都挺好. 都救了最多的人(在沒有安排帽子的次序的情況下, 最後的人永遠隻能猜. 所以隻能保證最多99人得救. 要救所有的人, 加其它條件是必需的.)
沒有標準評估你們的方案誰更好------你的方案不須用足給定條件(隻看前麵1人), 最後一人不需要犧牲自己, 不需要記錄每個人的回答, 需要4種不同回答和每個人願意幫助前麵的人. 612309的方案用足給定條件(看前麵所有人), 最後一人願意犧牲自己, 需要記錄每個人的回答, 不需要4種不同回答, 後麵的人不需要幫助前麵的人.