好吧.我是网上看到的答案,我直接跳过了,有耐心的自己看,我晕了!!!!
如果是犯人讨论完马上就叫一个人放风,这个人自己知道自己是第一个人,他就是关键的计数人!
规定:1、只有这个第一个人有权利开灯!只要他放风时发现灯是关的,他就要打开并计数
2、所有犯人,只能关一次灯,即在自己放风时第一次看到灯亮着的时候才能关,如果关过了一次就不能再关了。
也就是说,当第一个人开第100次灯的时候,就是他们释放的时候了。
第一种:
第一天出来的人为关灯者,之后的每个人第一次出来时,如果灯是关的,就把灯打开,如果灯是开的,则什么都不动,顺延到下次放风,这样子,每个人都需要开一次灯,而关灯者出来时,如果发现灯是开的,就把灯灭掉,当关灯者关了99次灯时,他就可以宣布弟兄们解脱了。按这种方式,光灯者每天出来的机会为1/100,也就是说正常情况下他每年可以出来三、四次,而且还不是每次出来都能关灯,因此关完99次,大概需要30年以上时间吧。
后来想了想,也可以用第三天出来的人作为关灯者:第一天出来的人把灯设置为关状态,第二天的人开灯,第三天出来的人就是以后的关灯者了,如果第一二天出来的人刚好是同一个(1/100机率),那么他第二天出来时不动灯,这样子第三天的关灯者就可以通过灯的状态,判断他以后需要关灯的次数了(开:97次,关:98次), 效率比原始方法提高了一点点。~~:)
第二种:
假定第n*100天出来的囚徒是“判断者”(100天,200天....),不论是否是同一个人。他负责:1判断是否完成任务。2关灯。
灯默认是关闭的。
在第1-99天中,若有人是第二次出来,则开灯。其余人如看见灯是开的,什么也不做,但要记住自己是第几次来。第100天来的人check。灯若是关的则任务完成。灯是开的则关灯。
在第1-199天中,若有人是第三次出来,则开灯。。第200天来的人check。灯若使关的则任务完成。灯是开的则关灯。
意思是说,在每n*100天中,若没有人来过n+1次,那么每人至少访问过一次。
即完成任务的条件是:在n*100天中每人都访问过n次。
因为是随机选人,则在100天中不被选上的概率应是1%
那么在n*100天中不被选上的概率应是1/n*100,当n-->无穷时,每人一次都没选上的几率趋近于0。可证明该题有解
第三种:
第一个第二次出来放风的人为计数员。
再前99天里,第一个放风的人让灯关上,后来的人若不是第二次出来放风,就让灯灭。第一个第二次放风的人才能开灯,他知道他前面有天数减一个人放过风,他为计数员。以后来的人保持灯开着,并记住自己没被计数。
第100天放风的人,若看到灯是灭的,而且自己也是第一次放风,则所有的人都已放过风了。否则若是自己没被记过数(包括前99天中看到灯开着的人及从没放过风的人),就把灯关了。
以后就采用指定计数人的方法,由计数员开灯,没计数的人关灯,再加上原来的人数,合计到100即可
第四种:
第三天出来的C作统计员:
1。如果前两天C米出来,第一天出来的A开灯,第二天是B的关灯,C可以记数二;如果前两天都出来的都是A的,让灯开着,第三个人C关灯,并记数一。
2。如果前两天C出来一次,可以直接记数一,8用管灯先。
3。如果前两天都是C出来。。。。。。。那太8幸了。。。。。。
后面的方法就8说了。。。反正有人记数。。。30年内可以出来就已经是运气了。。
让第一个人负责监视灯的状态,他只能灭灯,不能亮灯。其他的人,放风出来时,如果看见灯是灭的,就把灯点亮;如果灯是亮的,就不管它。但是,其他的人每人只能把灯点亮一次,如果自己点亮过灯了,看见灯是灭的也无动于衷了。 第一个人每次出来,如果看见灯被点亮了,就把灯熄灭掉,同时统计自己熄灭灯的次数。当计数达到 99 时,说明其他 99 人都出来过了,而且第一个人自己显然也出来过了。这时候他就宣称 100 人全部都出来过好了