论坛首页 Java企业应用论坛

国王与100个囚犯

浏览 24059 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (6)
作者 正文
   发表时间:2010-08-04  
而且LZ是全局计数的,题目要求是让囚犯自圆其说,但囚犯是不知道其他囚犯的情况的
0 请登录后投票
   发表时间:2010-08-04  
100次中可能有些人关了几次呢
0 请登录后投票
   发表时间:2010-08-04  
除非告诉每个人,只能关一次
0 请登录后投票
   发表时间:2010-08-04  
phyeas 写道
而且LZ是全局计数的,题目要求是让囚犯自圆其说,但囚犯是不知道其他囚犯的情况的

该程序明显是有问题的
0 请登录后投票
   发表时间:2010-08-04  
思路:
·选被关后第一天出去的囚犯作为特殊的计数员
·计数员被放出去,第一天将灯打开,今后每次放出去的时候,如果遇见灯是熄灭的,则将灯打开,并将记数加1
·而其他囚犯为普通囚犯,普通囚犯如果被放出去,在第一次遇见灯是打开的时候将其关闭(其他情况,即遇见灯是熄灭或第2,3,4..次遇见灯是开着的时候什么也不做)
=========================

思路里面不是说了么?囚犯在被关前的30分种商量,就已经说好了,谁第一个出去谁做计数的,大家各自按自己角色行事,我想是否为第一天被放风只要脑壳没问题,都能分辨出来

=============
100次中可能有些人关了几次呢

普通囚犯如果被放出去,在第一次遇见灯是打开的时候将其关闭(其他情况,即遇见灯是熄灭或第2,3,4..次遇见灯是开着的时候什么也不做) 。

=========
0 请登录后投票
   发表时间:2010-08-04  
而且LZ是全局计数的,题目要求是让囚犯自圆其说,但囚犯是不知道其他囚犯的情况的

========

普通囚犯只要知道自己是否已经关过灯。记数囚犯只需要放风遇见灯关时开灯,并在这时将记数+1就行了

当记数的囚犯记到100的时候,也就保证所有囚犯被放出去过
0 请登录后投票
   发表时间:2010-08-04  
想不清楚的,可以把程序运行一遍,看输出的注释就了解了...
0 请登录后投票
   发表时间:2010-08-04  
事实上,我觉得LZ的脑壳有问题,因为此题的先决条件是囚犯不知道时间,是不是第一天只有国王知道,你被关在一个封闭幽暗终日不见阳光的地方,你能知道过了几天吗?
0 请登录后投票
   发表时间:2010-08-04  
程序本身是有问题的,思考的角度就有问题,题目本身是说从囚犯的角度去分析
0 请登录后投票
   发表时间:2010-08-04  
我觉得思路可以,但是还是有问题呀啊,因为第一个被放出去的人无法界定。
而且楼主写的程序时随机时间,我看题目怎么是随机门号呀。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics