`
moxiaomomo
  • 浏览: 45399 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

关于三个囚犯分汤,是否有更多妙计

 
阅读更多
题目:
一间囚房里关押着两个犯人。每天监狱都会为这间囚房提供一罐汤,让这两个犯人自己来分。起初,这两个人经常会发生争执,因为他们总是有人认为对方的汤比自己的多。后来他们找到了一个两全其美的办法:一个人分汤,让另一个人先选。于是争端就这么解决了。
可是,现在这间囚房里又加进来一个新犯人,现在是三个人来分汤。必须寻找一个新的方法来维持他们之间的和平,该怎么办呢?

当初接触到这道题的时候,思维开始有点乱。但是后来慢慢想清楚了。
其实这种问题可以扩展到大规模的问题,加入有四个囚犯呢?五个呢?
如果是这样的话,就可以想到一种很经典的解法,那就是相似递归。

我们可以想到,最后分汤的情景只剩下两个人,那样的话就回到了题目最开始说的两个人分汤的公平解决方法了。

不过规则可以稍微改一下,
就是选一个人将汤分成n碗(n为还没喝汤的囚犯),剩下的人挑出一碗汤给当前分汤的人喝;
剩下的犯人再把汤混起来,按上一步的规则再次分汤;
如此重复直到最后剩一个人为止。

貌似这种效率不高,不知有无更妙的方法?有更好的办法时再继续更新。
0
2
分享到:
评论

相关推荐

    趣味算法:国王和100个囚犯.doc

    首先,我们需要定义三个类:Prison(监狱)、Light(灯)和Prisoner(囚犯)。监狱类中,需要包含一个灯的对象和一个囚犯数组。灯类中,需要包含一个状态标识,以表示灯的开关状态。囚犯类中,需要包含一个是否开过...

    狱吏问题,求解钱币兑换问题,沙漠问题蛮力算法.pdf

    某个国家仅有1分、2分、5分硬币,将钱n(n>=5)兑换成硬币有很 多种兑法,编写实验程序计算出10分钱有多少种兑法,并列出每种 兑换方式。 3.沙漠问题 题目描述: -辆吉普车来到1000km宽的沙漠边沿。吉普车的耗油量为1L ...

    oj_从1开始报数_编号1至n_n个死囚犯围成一圈_报到数m时_继续上述操作_

    在这个特定的版本中,n个死囚犯围成一圈,每个人都被赋予了一个从1到n的编号,他们从1开始依次报数,每当报到m的人就会被处决,然后从下一个人继续报数,这个过程一直持续,直到只剩下最后一个囚犯。 解决这个问题...

    prisoner_adv.zip_prisoner_囚犯 Java

    总的来说,"囚犯逃跑问题"的Java解决方案不仅展示了编程技巧,还涵盖了概率论、逻辑推理和算法设计等多个领域的知识。通过解决此类问题,开发者可以提高自己的问题解决能力,加深对编程语言特性的理解,同时也能锻炼...

    有100名囚犯让他们依次站成一排国王命令手下先干掉全部奇数位置处的人 再次干掉全部奇数位置处的直到最后剩下一个人为止剩最后幸存者

    总结一下,这个问题是一个关于逻辑推理和信息传递的挑战。囚犯们通过理解和利用淘汰规则,以及设计一套预设的编码系统,可以提高至少一人存活的概率。尽管不能保证哪位囚犯能存活,但这种策略确保了生存的可能性。这...

    防止犯人串供 隔离设计

    3. **选择列进行操作**:从0最多的行开始,选择一个0个数最多的列(如果有多个相同,选择任意一列),将该行与该列进行逻辑加(1+1=1,1+0=1,0+0=0)。 4. **更新矩阵**:将选择的列中除行首元素(即对应犯人本身...

    逻辑思维题与答案解析.doc

    每天监狱都会为这间囚房提供一罐汤,让这三个犯人自己来分。如何才能使他们和平地分汤? 答案:让第一个人将汤分成他认为均匀的三份;让第二个人将其中两份数汤重新分配,分成他认为均匀的 2 份;让第三个人第一个...

    75道逻辑思维题(附答案解析).doc

    当加入第三个犯人后,可以由原本的分汤者继续分汤,让新犯人和另一个犯人先选择,剩余的归分汤者。这样可以确保分汤者不会觉得不公平,因为无论怎么分,他都能得到最后剩下的那碗汤。 【逻辑思维题5】该问题涉及到...

    100-prisoners:模拟解决100名囚犯和灯泡问题的不同策略

    有一个监狱,院子里有可以由囚犯打开或关闭的灯。 有100个囚犯被单独监禁,这意味着他们不能彼此互动,也不能从外界获得任何感官信息。 入狱时,灯泡将关闭。 监狱长每天都以相同的概率挑选一名随机的囚犯,让他们...

    php约瑟夫问题解决关于处死犯人的算法

    在这个例子中,法官要判处4个犯人死刑,他制定了一个规则,从第s个人开始,每数到第D个人就会被处死,直至只剩下一个犯人可以获得赦免。 在PHP中,解决约瑟夫问题通常涉及到数组和指针的操作。提供的代码示例给出了...

    逻辑思维题及答案.doc

    问题是两个犯人如何分汤,后来又加进来一个新犯人,现在是三个人来分汤。必须寻找一个新的方法来维持他们之间的和平。 答案是:让第一个人将汤分成他认为均匀的三份;让第二个人将其中两份数汤重新分配,分成他认为...

    基于matlab实现迭代的囚徒博弈在各个领域都有研究,此代码包含了两个或更多player的竞争,在R2009a下运行.rar

    此外,你还可以通过这个项目探索更复杂的策略和多玩家交互,进一步研究合作和竞争在复杂系统中的作用。 总之,基于MATLAB的迭代囚徒博弈实现提供了一个理解博弈论、学习MATLAB编程以及探索动态系统行为的良好平台。...

    程序员面试题目

    **解题思路**:引入第三个犯人时,可以采用“第一个人分汤,第二个人和第三个人按先后顺序选择”的方法。具体步骤如下: - 第一个人将汤分成三份,尽量平均; - 第二个人首先挑选一份他认为最大的汤; - 第三个人从...

    逻辑思维题 75道

    **题目描述**:囚房里有三个犯人,每天监狱都会为这间囚房提供一罐汤,他们需要找到一个公平的方法来分汤。 **解决方案**:采用轮流分汤的方式,第一个人负责分汤,其他人选择先取或者后取。例如:甲分汤,乙先取,...

    练智力.doc

    【9】一个教授逻辑学的教授,有三个学生,而且三个学生均非常聪明! 一天教授给他们出了一个题,教授在每个人脑门上贴了一张纸条并告诉他们,每个人的纸条上都写了一个正整数,且某两个数的和等于第三个!(每个人...

    75道逻辑题-没有答案,要答案只有百度了

    当增加一名囚犯后,可以由原来的两人中的一人来分汤,分完后,新囚犯选择,而另一个人则根据选择判断是否调整。这种策略可以确保每个人都有平等的机会。 5. 第五题是一个平面几何问题,要证明4n个硬币可以完全覆盖...

    迭代的囚徒博弈在各个领域都有研究,此代码包含了两个或更多player的竞争,在R2009a下运行,matlab源码

    此外,还可以探索更复杂的多玩家设置,看看是否会有稳定的联盟或社会结构出现。 总的来说,这个MATLAB项目提供了一个研究合作与竞争动态的平台,对于理解人类行为、组织和社会制度的形成有着重要的理论意义。通过对...

    智力题大全(含答案)

    在加入第三个犯人后,可以让甲分汤,乙和丙先选,然后将他们的汤混合后再按之前的方案分。 5. **覆盖桌面的硬币**:通过构造证明,可以表明4n个半径为1的硬币能够覆盖整个桌面。首先,用n个半径为2的硬币可以覆盖...

    逻辑思维题训练.doc

    当增加到三个犯人时,可以由一个人分配三碗汤,其中一碗被认为最多,一碗最少,第三碗作为平衡。让新加入的犯人先选,然后是原来的犯人轮流选择,这样能确保每个人都有平等的机会。 【5】硬币覆盖桌面: 此题考察...

Global site tag (gtag.js) - Google Analytics