看到一个有趣的问题,有兴趣的可以做一做
国王招来100个囚犯,对他们说:你们犯的是死罪,本应该将你们统统杀掉,但我慈悲为怀,
给你们一次求生的机会。15分钟以后,你们将被关进一个有100间隔离牢房的监狱里,每人
一间牢房,都与外界隔绝,什么也听不见、看不到,连时间都没法计算,更别说获得外界的
任何信息。(送饭除外,但也是不规律的送)
这所监狱有一个院子,每天会随机打开一间牢房的门,让那个囚犯到院子里来放风。院子里
有一盏路灯,放风的囚犯可以控制它的开关,将它打开或是关闭。除囚犯之外,
其他人都不会去碰开关。这盏灯会永远有充足的能源供应,如果灯泡坏了或是电路出了故障会马
上修好,当然修理人员不会改变灯的状态(开或关)。
除了开关这盏灯,放风的囚犯放风时留下的任何其它痕迹都会在夜晚被清除干净(包括在灯上作的
任何记号)。
牢房是完全封闭的,院子里的灯光在牢房里看不到。只有放风出到院子里的人才能看到。
好了现在我向你们提出一个要求,只要你们做到了,就可以全部获得释放:
若干天以后,你们中只要有任何一个人能够向我证明所有的人都曾到院子里去过,你们就全体
释放。当然要有证据!因为我只会给你们一次机会,如果向我证明的那个人无法自圆其说,你们
就全部砍头。所以,要珍惜这次机会。如果你们永远做不到我的要求,你们就全部关到死.
现在给你们15分钟商量你们的方案。15分钟以后,你们将被关进我刚才说的那个监狱,永远无法再交流。
==================================
灯的初始状态是开还是关,犯人们不知道。
请帮助这100个囚犯出监狱。
编程输出:
灯的初始状态:?(随机的)
向国王证明100人都已放过风的囚犯编号:?(由编程者指定)
出监狱时已经过了多少天:?(随机的)
其中
囚犯1号放风:?次(随机的)
囚犯2号放风:?次(随机的)
囚犯3号放风:?次(随机的)
......
囚犯100号放风:?次(随机的)