zoukankan      html  css  js  c++  java
  • 囚犯活命问题

    问题描述:5个囚犯,分别按照1-5号在装有100颗绿豆的麻袋抓绿豆,规定每人至少抓一颗,而抓得最多和最少的人将被处死,而且,他们之间不能交流,但在抓的时候,可以摸出剩下的豆子数。问他们中谁的存活几率最大?提示:

    1,他们都是很聪明的人
    2,他们的原则是先求保命,再去多杀人
    3,100颗不必都分完
    4,若有重复的情况,则也算最大或最小,一并处死
     
    解答:
         100个豆子5人平分,每人20个,所以我们可以确定不会有人拿20以上,否则他必死无疑。我们从后往前分析:5号想不死就必须不是最大或者最小,那么他肯定会选择前4个人的平均数,同理,4号也会选择前3个人的平均数,3号会拿前两个人的平均数。
    现在我们分析1号和2号:
         先说2号:2号知道后面3个人肯定会选取平均数,所以2号肯定是与1号相等,或者相差1。
         现在讨论1号:1号肯定知道后面人的想法,如果让他们拿平均数,那么自己必死,所以1号肯定想办法不让5号拿到平均数。这样5人的平均数大于20,所以1号要拿的个数大于或等于20个。如果拿20以上,1号必死,且2,3,4可以保命,所以1只能拿20颗。
         然后同样2不能拿21颗,所以他只能拿20或者19颗。那19颗的结果就是(20,19,x,y,z)根据条件,不可能牺牲自己去救人,所以19<=x,y,z<=20,不管何种情况,大家全部会死。
         拿20颗的结果就是(20,20,20,20,20),同样,大家都会死掉。
         1号选择20颗符合多杀人原则,如果1号不考虑多杀人原则而选择少于20颗的话,结果也是一样会死掉。(x,x+1,a,b,c)(x<=a,b,c<=x+1),(x,x,x,x,x),(x,x-1,a,b,c)(x-1<=a,b,c<=x),上述情况所有人都会死掉。能保命就保命,不能保命就多杀人。
          所以结论是,5个人都得死。
     
  • 相关阅读:
    走向变态的人生
    HDWIKI 4.0.2绿色版(含运行环境)(V1)
    centos7 安装python3.7.1
    一种高并发流控程序的简单轻量实现
    编写JDBC框架优化CRUD操作
    一段阻塞队列代码的纠错与优化
    一次请求在同一个事务实现
    创建Java内部类的编译错误处理
    C++模板简单分析与举例
    java.lang.OutOfMemoryError处理错误
  • 原文地址:https://www.cnblogs.com/luotinghao/p/3418360.html
Copyright © 2011-2022 走看看