可能不是最优解,每个阶段或许都还有压榨的空间。只是提供一种解决方案。
讨论期间,犯人们预定好编号。
第一阶段,1天:
1号犯人举白旗,其他犯人均举红旗。
1号犯人的邻居将获得“异”的信息,而其他犯人获得“同”的信息。
解析:虽然房间编号是1到100,但从信息获取的角度说,由于1号和100号房被视为邻居,所以犯人所处的是一个环。本阶段的目标是找到1号犯人的两位邻居。
第二阶段,99天:
1号犯人一直举白旗,直到获得“异”的那天,以后一直举红旗。
1号犯人的邻居:一直举红旗,直到自己编号对应的那天举白旗,并将自己的编号改为“新2号”;如果在这之前获得“同”的信息,就不再举白旗,并将自己的编号改为“新100号”。
其他犯人一直举红旗。
解析:这一阶段的目标是确定新编号的顺序,让1号的两位邻居中编号较小的那位(假设编号为n)成为新2号。
初始状态,1号举白旗,其他人举红旗。两位邻居获得“异”的信息,其他人获得“同”的信息。
当到了第n天,小邻居举白旗,1号获得“异”的信息,并于第n+1天开始举红旗,大邻居将在第n+1天获得“同”的信息。从而,小邻居将自己编号改为“新2号”,大邻居改为“新100”号。
最坏的打算,1号的两位邻居分别是99号和100号。大邻居将在第99+1=100天获得“同”的信息。但如果他在第99天仍未获得“同”的信息,由于他知道自己是100号,所以他就可以推断另一位邻居是99号,所以这里可以省一天时间。这个阶段99天即可。
第三阶段,97天:
1号和新100号一直举红旗。
新2号一直举白旗。
其他人初始举红旗,在获得“异”后给自己重新编号,并于次日开始举白旗。
解析:这一阶段的目标是确定所有人的新编号。第一天只有新2号一人举白旗,新3号获得“异”的信息。从第二天开始,每天都会增加一人举白旗。直到第97天,新98号开始举白旗,新99号获得“异”的信息。由于新100号在上一阶段已经知道自己的新编号,所以这一阶段到此就不必再继续了。
至此,所有人都有了新的编号。
第四阶段,最多200天:
按新编号,第1天,平方数号的人举白旗,其他人举红旗。如狱警来询问房间号,说明新编号与房间号恰好对应,所有人都将知道自己的房间号。否则,第2天,平方数+1号的人举白旗,其他人举红旗。如狱警来询问房间号,说明新编号是房间号+1。以此类推,第100天,平方数+99号的人举白旗,其他人举红旗,如果直到这天狱警都没来问房间号,说明新编号与房间号的顺序相反。每个人给自己再重新编号,新新号=101-新号。再次重复本阶段的策略。