论坛首页 Java企业应用论坛

国王和100个囚犯

浏览 36072 次
精华帖 (0) :: 良好帖 (10) :: 新手帖 (0) :: 隐藏帖 (8)
作者 正文
   发表时间:2010-01-14  
我觉得这应该是个逻辑题,结果应该是一个方案, 而不是多少天能出来
可以这样,
1. 指定100其中的一个人来做管理员
2. 管理员第一次出来放风时候把灯打开
3. 其他人放风的时候, 如果自己是第一次出来 看灯的状态,如果是亮的,那么关闭它
4. 其他人如果不是第一次出来,不改变灯的状态,关着就让它关着,开着就让它开着
5. 如果第一次出来的时候 灯为关闭状态, 那么不改变状态,并且当自己没出来,下次出来仍然是第一次出来
6. 当管理员再次出来时候如果灯是关闭的 说明除他之外有一个人放出来了 心中的计数器加1, 并把灯打开, 如果灯是开着的,说明除他之外没有人出来过, 不做任何操作
0 请登录后投票
   发表时间:2010-01-14  
zhaolaiwei 写道
1、他们可以在15分钟时间内选一个计数员
2、计数员负责计数和开灯(灯开着就不用开了)
3、剩下的人每人出去的任务就是关灯(每个人只能关灯一次)
4、直到计数员计的人数为99人,则OK.


如果灯的初始状态是关的,而计数员幸运地第一个放风,那就杯具了。
0 请登录后投票
   发表时间:2010-01-14  
我要是国王,我就关一个囚犯100年都不放他一次风。
不知道贴代码的兄弟们,你们是怎么算出他们多少年后获得自由的?
别钻我空子,就按题中要求,随机让一个囚犯放风,可就有这么一个囚犯他点背啊,点背了200年也没被放过风,怎么办?这种小概率事件也是可能发生的。
0 请登录后投票
   发表时间:2010-01-14  
kukuwuwu 写道
我觉得这应该是个逻辑题,结果应该是一个方案, 而不是多少天能出来
可以这样,
1. 指定100其中的一个人来做管理员
2. 管理员第一次出来放风时候把灯打开
3. 其他人放风的时候, 如果自己是第一次出来 看灯的状态,如果是亮的,那么关闭它
4. 其他人如果不是第一次出来,不改变灯的状态,关着就让它关着,开着就让它开着
5. 如果第一次出来的时候 灯为关闭状态, 那么不改变状态,并且当自己没出来,下次出来仍然是第一次出来
6. 当管理员再次出来时候如果灯是关闭的 说明除他之外有一个人放出来了 心中的计数器加1, 并把灯打开, 如果灯是开着的,说明除他之外没有人出来过, 不做任何操作


如果灯一开始就是关着的,管理员如何确定是否有人出来过?

算多少天只是好奇一般情况下他们还能不能活着出来
0 请登录后投票
   发表时间:2010-01-14  
52356 写道
我要是国王,我就关一个囚犯100年都不放他一次风。
不知道贴代码的兄弟们,你们是怎么算出他们多少年后获得自由的?
别钻我空子,就按题中要求,随机让一个囚犯放风,可就有这么一个囚犯他点背啊,点背了200年也没被放过风,怎么办?这种小概率事件也是可能发生的。


题目说明是完全随机的,所以直接用了java.util.Random,算出来的可以作为期望值吧?
0 请登录后投票
   发表时间:2010-01-14  
langshao 写道
kukuwuwu 写道
我觉得这应该是个逻辑题,结果应该是一个方案, 而不是多少天能出来
可以这样,
1. 指定100其中的一个人来做管理员
2. 管理员第一次出来放风时候把灯打开
3. 其他人放风的时候, 如果自己是第一次出来 看灯的状态,如果是亮的,那么关闭它
4. 其他人如果不是第一次出来,不改变灯的状态,关着就让它关着,开着就让它开着
5. 如果第一次出来的时候 灯为关闭状态, 那么不改变状态,并且当自己没出来,下次出来仍然是第一次出来
6. 当管理员再次出来时候如果灯是关闭的 说明除他之外有一个人放出来了 心中的计数器加1, 并把灯打开, 如果灯是开着的,说明除他之外没有人出来过, 不做任何操作


如果灯一开始就是关着的,管理员如何确定是否有人出来过?

算多少天只是好奇一般情况下他们还能不能活着出来

如果灯一开始关着的, 管理员就当一个人都没出来过, 其他人第一次出来时 灯是关着的  也当自己没出来过,见弟5条
0 请登录后投票
   发表时间:2010-01-14  
langshao 写道


如果灯一开始就是关着的,管理员如何确定是否有人出来过?

算多少天只是好奇一般情况下他们还能不能活着出来


如果那个管理员一直随机不到他, 他们得关一辈子  哈哈
1 请登录后投票
   发表时间:2010-01-14  
kukuwuwu 写道
langshao 写道
kukuwuwu 写道
我觉得这应该是个逻辑题,结果应该是一个方案, 而不是多少天能出来
可以这样,
1. 指定100其中的一个人来做管理员
2. 管理员第一次出来放风时候把灯打开
3. 其他人放风的时候, 如果自己是第一次出来 看灯的状态,如果是亮的,那么关闭它
4. 其他人如果不是第一次出来,不改变灯的状态,关着就让它关着,开着就让它开着
5. 如果第一次出来的时候 灯为关闭状态, 那么不改变状态,并且当自己没出来,下次出来仍然是第一次出来
6. 当管理员再次出来时候如果灯是关闭的 说明除他之外有一个人放出来了 心中的计数器加1, 并把灯打开, 如果灯是开着的,说明除他之外没有人出来过, 不做任何操作


如果灯一开始就是关着的,管理员如何确定是否有人出来过?

算多少天只是好奇一般情况下他们还能不能活着出来

如果灯一开始关着的, 管理员就当一个人都没出来过, 其他人第一次出来时 灯是关着的  也当自己没出来过,见弟5条

kukuwuwu正解,没看出漏洞来.
0 请登录后投票
   发表时间:2010-01-14  
langshao 写道
52356 写道
我要是国王,我就关一个囚犯100年都不放他一次风。
不知道贴代码的兄弟们,你们是怎么算出他们多少年后获得自由的?
别钻我空子,就按题中要求,随机让一个囚犯放风,可就有这么一个囚犯他点背啊,点背了200年也没被放过风,怎么办?这种小概率事件也是可能发生的。


题目说明是完全随机的,所以直接用了java.util.Random,算出来的可以作为期望值吧?

这个问题如果要计算他们多少天后能自由的话,我们也只能算出个最短天数。最初看到这个问题时,我的第1反应就是这里有许多不确定的要素。
我认为,这个问题可以用“代码”描述。但是要用代码计算出个精确结果是不可取的。
0 请登录后投票
   发表时间:2010-01-14  
中国大人 写道
kukuwuwu 写道
langshao 写道
kukuwuwu 写道
我觉得这应该是个逻辑题,结果应该是一个方案, 而不是多少天能出来
可以这样,
1. 指定100其中的一个人来做管理员
2. 管理员第一次出来放风时候把灯打开
3. 其他人放风的时候, 如果自己是第一次出来 看灯的状态,如果是亮的,那么关闭它
4. 其他人如果不是第一次出来,不改变灯的状态,关着就让它关着,开着就让它开着
5. 如果第一次出来的时候 灯为关闭状态, 那么不改变状态,并且当自己没出来,下次出来仍然是第一次出来
6. 当管理员再次出来时候如果灯是关闭的 说明除他之外有一个人放出来了 心中的计数器加1, 并把灯打开, 如果灯是开着的,说明除他之外没有人出来过, 不做任何操作


如果灯一开始就是关着的,管理员如何确定是否有人出来过?

算多少天只是好奇一般情况下他们还能不能活着出来

如果灯一开始关着的, 管理员就当一个人都没出来过, 其他人第一次出来时 灯是关着的  也当自己没出来过,见弟5条

kukuwuwu正解,没看出漏洞来.


我实在看不明!
3-5是不是说“第一次看到灯开就关”?
第2条,如果管理员第一次出来看到灯是开着的,怎办?
其他人都在管理员第一次出来之后才出来?
0 请登录后投票
论坛首页 Java企业应用版

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