以具体例子说明解法(基本可扩展到N种颜色帽子和k个人),七顶帽子黑色四顶白色三顶,共五人。
解法就是从最后递推,最初时大家知道的信息是:两种帽子的最大值,以及白+黑=5.(1)
若最后一个人说知道,那么必然是由于前面4人中有白帽3顶或黑帽4顶。
从而,最后一个人说不知道,那么前面4人得到且只得到公共知识:前面4人不是(白帽3顶或黑帽4顶),化简一下即,白<=2,黑<=3。
以此类推,倒数第2人说不知道,那么前面3人得到:前面3人中白<=1,黑<=2.***************(2)
倒数第3人“如果”说不知道,那么前面2人得到:前面2人中白<1,黑<2.等等,发现了吗?前面共2顶帽子,但白+黑却小于2!这是不可能的,因此倒数第3人肯定能推出自己的帽子颜色,实际上(2)等价于前面3人中白=1,黑=2!因此如果最后两人都说不知道,前面3人必然可以推出自己的帽子颜色。
之前见过网上的答案思路会更清晰点,(1)等价于白>=1,黑>=2!之后都用>=来代替上面的<=,这个简单的变换很直观的说明了,最前面的1顶白帽能推出,最前面的2顶黑帽能推出,其余推不出,而且,直接能推广到N种颜色的情况。