囚犯问题 如果大家是第一次出去放风就关掉灯,如果不是第一次就打开灯,而灯的状态是由他之后的人再来改变,也就是说后面一个人可以看到前面人的灯的效果!如果有一个人在看到了99次灯都是灭的,说明大家都是已经出去放过风了!我感觉这样是可以的。VERY EASY! 但如何给国王证明这个结果,呵呵!不知道证明是不是上面我所说的过程算不算是证明,不算的话,也要被砍头了! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 月之影 说的确实在理,不过没有最极端的情况,因为就只有这一种极端情况,就是这个人连续两天都出来才不好判断,如果不是连续两天的话,是可以的call,这么说我也要被杀头了嘛?55...不会吧,该死的,老天啊,你怎么能让一个人连续出去两次啊,害得我永远也出不去了! 以下方法错误到了极点啊!只有一个计数的方法可行,其它的都不可行。=============================================================================tavor(龙双公子) 哈哈,我上面一激动把初始状态和下面的标准写反下,下面是更详细的解释大家的思路被封在两个地方:1.只让一个人计数(可以,但奇慢,效果十分之不好,大伙都这么认为吧)2.多人计数,但不知道如何控制状态。(都对状态的设置十分迷糊)我再详细说一下:1.假设灯的初始状态是开的。如果囚犯是第一次放风,看见灯灭,就认为前面有一个人出来放过风,计数加1,并且保持灯灭的状态不变;如果看见灯开着,因为他是第一次出来,就把灯关掉。如果囚犯不是第一次放风,看见灯灭,就认为前面有一个人出来放过放,计数加1,并且把灯打开;如果看见灯开着,因为他也是第二次出来,就保持灯开的状态不变。当任一个人的计数达到99的时候,就可以报告给国王了。2.如果灯开的时候是灭的(理论上是这样才合理的)如果囚犯是第一次出去,看见灯亮,就认为前面有一个人出来放过风,计数加1,因为他也是第一次出来,所以并且保持灯亮的状态不变;如果看见灯灭,因为他是第一次出来,就把灯打开。如果囚犯不是第一次放风,看见灯亮,就认为前面有一个人出来放过风,计数加1,并且把灯关掉;如果看见灯灭着,因为他也是第二次出来,就保持灯灭的状态不变。同样,当任一个人的放数达到99的时候,就可以报告给国王了=====================================================================================以上方法错误到了极点啊!只有一个计数的方法可行,其它的都不可行。 不对 风之影 ,我的推理没有问题,只不过被你的假像所迷惑(其实也许本来就是我想的不够充分),其实就只有一个你所说的极端情况,那就是这个人被连续两天被放出来,再者,一个人如果是被连续两天放出来的话,老大,你连续待在外面两次你能分不出来吗?你刚被带进来,然后又马上被带出去,你分不清楚嘛!如果真的是这样的话,估计不要等着放出去了,还是自尽好一些。不过也许楼主又要说,每天在外面待的时间是随机,我CALL,那么说就是出题的漏洞了。根本不需要人数到100,要不 月之影 你还是给我举个例子吧!我不睡觉了,和你讨论讨论! TO:herocome(隐身人) 朋友,请你给一个你自己的不错误到极点的方法!谢谢! 我觉得很简单,因为国王给他们都有一次机会,所以当100天过去之后,就有答案了,因为一点,人人都可以得一次饭吃。我觉得就像 while条件判断一样。 public 机会() while (每人一次机会) { if (其中一个人没有得到机会) { 国王说的话=false; break:; } } 测试N次,最多157年,最少31年出来~一个最简单的方法是让一个囚犯负责关灯,其余的囚犯负责开灯,规则如下:设第100号囚犯关灯,其他囚犯作如下动作:当他头一次放风并且看到的灯是关着的时候,那么他将灯打开,其余的情况不作任何操作而第100号囚犯(负责关灯的)则在他被放风的时候观察灯,若灯亮,记下次数,并且关灯,若灯暗,则不作操作,这样,当这一囚犯记录到99次关灯之时,他可以确认所有的人至少都被放风过一次了。这个方法是最简单的但不是最优的,有兴趣的人可以用程序模拟一下,会发现天数太多,所有的囚犯十有八九注定是要老死在狱中的...by 月之影 月之影的答案确实是可行的,但是要30年,如果在这30年中有人,那99个人中有个人死掉的话,那么那个计数的the one就永远也无法去想国王证明了。解法2:(转)为了信仰,我们甘愿付出生命。15分钟内我们选出一个智勇双全的人(b),用其他99人(a)的生命换来他的释放。再由b为a们报仇,组织一支军队干掉变态的国王。(当然,这都是后话,与题目无关)具体方案:管他妈的鸟路灯!所有的a到放风时都在院子里撞死。b呢?当他发现连续很多天都轮到他放风时,就明白了:a已经死光光。也就是说:a已经全部放过风了。那么,他就可以得到释放。该方案不要半年就可以完成,成功率也可以无限逼近100%。 Nullable<T>类型为什么能为null?(编译时能通过) 新手請教一個關於簡易計算器的問題 求正则表达式 VS2005的正则表达式替换 web引用 winform下,保存图片到ORACLE中以及读取问题! C#初学者,能否给提供关于C#项目的实例. 串口问题 简单的DataGridView绑定问题 救命啊 我事先绑定的控件全部不起作用了 为什么数据库更新的时候总是提示出错(在线等) 哪位大虾在c/s结构下,做过FTP上传下载文件的,请进来看看。。。。。。。。。 如何动态生成组件对象实例?
如果不是连续两天的话,是可以的
call,这么说我也要被杀头了嘛?55...不会吧,该死的,老天啊,你怎么能让一个人连续出去两次啊,害得我永远也出不去了!
只有一个计数的方法可行,其它的都不可行。
=============================================================================
tavor(龙双公子)
哈哈,我上面一激动把初始状态和下面的标准写反下,下面是更详细的解释大家的思路被封在两个地方:
1.只让一个人计数(可以,但奇慢,效果十分之不好,大伙都这么认为吧)
2.多人计数,但不知道如何控制状态。(都对状态的设置十分迷糊)
我再详细说一下:
1.假设灯的初始状态是开的。
如果囚犯是第一次放风,看见灯灭,就认为前面有一个人出来放过风,计数加1,并且保持灯灭的状态不变;如果看见灯开着,因为他是第一次出来,就把灯关掉。如果囚犯不是第一次放风,看见灯灭,就认为前面有一个人出来放过放,计数加1,并且把灯打开;如果看见灯开着,因为他也是第二次出来,就保持灯开的状态不变。当任一个人的计数达到99的时候,就可以报告给国王了。2.如果灯开的时候是灭的(理论上是这样才合理的)
如果囚犯是第一次出去,看见灯亮,就认为前面有一个人出来放过风,计数加1,因为他也是第一次出来,所以并且保持灯亮的状态不变;如果看见灯灭,因为他是第一次出来,就把灯打开。如果囚犯不是第一次放风,看见灯亮,就认为前面有一个人出来放过风,计数加1,并且把灯关掉;如果看见灯灭着,因为他也是第二次出来,就保持灯灭的状态不变。同样,当任一个人的放数达到99的时候,就可以报告给国王了
=====================================================================================以上方法错误到了极点啊!只有一个计数的方法可行,其它的都不可行。
,其实就只有一个你所说的极端情况,那就是这个人被连续两天被放出来,再者,一个人如果是被连续两天放出来的话,老大,你连续待在外面两次你能分不出来吗?你刚被带进来,然后又马上被带出去,你分不清楚嘛!如果真的是这样的话,估计不要等着放出去了,还是自尽好一些。不过也许楼主又要说,每天在外面待的时间是随机,我CALL,那么说就是出题的漏洞了。
根本不需要人数到100,要不 月之影 你还是给我举个例子吧!
我不睡觉了,和你讨论讨论!
while (每人一次机会)
{
if (其中一个人没有得到机会)
{
国王说的话=false;
break:;
}
}
设第100号囚犯关灯,其他囚犯作如下动作:
当他头一次放风并且看到的灯是关着的时候,那么他将灯打开,其余的情况不作任何操作
而第100号囚犯(负责关灯的)则在他被放风的时候观察灯,若灯亮,记下次数,并且关灯,若灯暗,则不作操作,这样,当这一囚犯记录到99次关灯之时,他可以确认所有的人至少都被放风过一次了。
这个方法是最简单的但不是最优的,有兴趣的人可以用程序模拟一下,会发现天数太多,所有的囚犯十有八九注定是要老死在狱中的...by 月之影
解法2:(转)为了信仰,我们甘愿付出生命。15分钟内我们选出一个智勇双全的人(b),用其他99人(a)的生命换来他的释放。再由b为a们报仇,组织一支军队干掉变态的国王。(当然,这都是后话,与题目无关)
具体方案:管他妈的鸟路灯!所有的a到放风时都在院子里撞死。b呢?当他发现连续很多天都轮到他放风时,就明白了:a已经死光光。也就是说:a已经全部放过风了。那么,他就可以得到释放。
该方案不要半年就可以完成,成功率也可以无限逼近100%。