既然楼上说前面已经有人答对了,那么我这个答案肯定是错的了,但是我还是想说出来跟大家讨论讨论。
  
 那么我们的方法是:100号喊出99号的颜色,之后每一个人喊前一个人喊的颜色,直到看到在自己前方相邻的位置,依次连续有2个或2个以上的人帽子颜色和自己不同时,他将喊出对方的颜色。即如果只有1个或1个以下的人帽子颜色和自己不同,他则喊出自己的颜色。
  
 请允许我让我们的讨论从一个假设开始(最后我们再来证明这个假设能不能够实现)。设俘虏人数为j,第一个说话的是j号,此时,j知道自己帽子的颜色,并且所有人都知道j知道自己帽子的颜色。
 他们的原则都是存活人数最多,而不在乎自己的安危。
 1、先来看j=1的情况。1号说话时,他的话只能影响自己。当1号知道自己帽子颜色的时候,他必定也必须准准确确的将其说出;
 2、再来看j=2的情况。2号说话时,他的话能够影响自己和1号。那么当2号知道自己帽子颜色的时候,他也会说出自己帽子的颜色。这时候1号自己猜测,2人中期望存活(以下简称存活)1.5人;
 3、接下来,看j>=3的情况。为了直观,我们再次暂时进一步地假设,3号知道自己的帽子颜色,为黑色(白色同理)。
 (1)如果3号这个时候喊出了“白”,从而自己被杀掉,那么2号和1号心里会怎么考虑?他们知道3号说任何一个字的目的都是活人最多化,那么,3号如果说黑,自己可以活,而此时2号和1号只能猜测自己的帽子颜色,于是两人中可以存活1人。加上3号,3人中存活了2人(假设他们都是风险中立者)。那么3号如果说白,3人中能够存活的必须要不少于2人。这只有在3号为了报告2号和1号他们两人帽子颜色相同,且同为白色,才可实现。因为如果2号、1号同为黑色,或者一黑一白,3号说白,结果都将是3人中存活1人。
 (2)而推进到4人情况时,大家可以类似讨论,依此类推,原则就是我们上面说的每个人如果看到在自己前方相邻的位置,依次连续有2个或2个以上的人帽子颜色和自己不同,他将喊出对方的颜色,如果只有1个或1个以下的人帽子颜色和自己不同,他则喊出自己的颜色。
 (3)这一情况可以推进到99号身上。那么第100号,他会说什么。他第一个说话的时候,无论如何是不可能知道自己帽子颜色的。他如果瞎猜,99号也只能瞎猜(接下去每个人都只能瞎猜),这样在他们两人之间存活1人。于是100号必然选择说出99号的颜色,这时两人中存活1.5人。于是从99号确知自己颜色,假设得证,从此,上述原则即可应用。
 4、我不得不承认,这种方法的效率取决于随机抽取的戴在每个人头上的帽子的颜色排列方式。但是他的好处在于不必以策略传递为基础。每个人以存活人数最多为目的最后都会落到这个方式上来。因为这是在他们所能够影响的范围内最有效率的方式;
 5、这里还有一个问题是,如果碰到一黑一白相间排列的情况,这种方式的效率,就最低了,只能有50人存活。