现在有10个人被一个魔鬼逮住了。魔鬼对于直接把人杀掉的方法不感兴趣了。于是,他就想了一个杀人的新花样。是这样的,一天晚上,魔鬼向着十个人宣布了游戏规则,即明天早上他要把10个人排成一排,然后从一堆既有无限多的白帽子混着无限多黑帽子的帽子堆为每个人随机抽取一顶帽子,给他们10个人都戴上帽子。因为10个人是排成一排的,所以排在第10个的人可以看到前面9个人帽子的颜色,排在第9个人可以看到前面8个人的帽子的颜色,…以此类推。然后,魔鬼会从排在第10个人开始,问他,你头上的帽子的颜色是白色还是黑色,如果答对了,就放他走;如果答错了,就被杀掉。然后同样问排在第9位的人,然后问排在第8位的人,….以此类推。在这其中,10个人所能做的只有当他被魔鬼问到的时候,答白色或者黑色。不能有超越此范围的任何行动,不然,魔鬼会把它们10个人全部杀死。

现在魔鬼给他们10个人一晚上的时间去商量一个对策,使得他们中能存活下来的人越多越好。请问,你会有什么样的对策,请计算出按照你的对策执行时最坏的情况下,他们中能有多少人能100%够活下来?期望能活下来的人数又是多少?

3 5 收藏


直接登录
最新评论
  • wf php、前端 2016/01/19

    至少5个吧,第10个回答的是第9个的帽子颜色,第9个回答的是第10个说的颜色,然后第10个可能死,第9个活;第8个回答第7个颜色,第7个回答第8个说的颜色…两两一组,活5个

  • wf php、前端 2016/01/19

    貌似还有种可以多活一个人~,
    假设1代表黑帽子,0代表白帽子。
    第10个说的是第9个和第8人的颜色10运算,10 = 1 代表有一个黑帽子,00 = 0和 11 = 0代表是相同颜色,那么第9个人就可以根据第8人的帽子和第10人说的推断出自己的帽子:
    假如第10人说的是1,那么他只要说和第8人相反的颜色就行了
    假如第10人说的是0,那么他只要说和第8人相同的颜色就行了。
    第9人也就可以根据第8人和第10人说的推断出自己的帽子
    这样的话1个人说的话可以活2个人,也就是3个人中有2个人活,10个人就有6个人保证活

    • wf php、前端 2016/01/19

      补充下,00 = 0和 11 = 0代表是相同颜色(白帽子)

      • wf php、前端 2016/01/19

        第9人也就可以根据第8人和第10人说的推断出自己的帽子=>
        第8人也就可以根据第9人和第10人说的推断出自己的帽子

        。。

    • e   2016/01/19

      大哥,想多了,只能回答白色或者黑色

      • wf php、前端 2016/01/20

        是啊,是只能答白色和黑色,约定前面颜色不同答黑色,相同答白色,那么下一个回答的只要根据上一个的回答和前方颜色运算后答就行了。
        你没懂我意思~反正不是正确答案,无所谓啦

  • 9个100%活下来 最后一个有50%能活下来
    但如果最后一个比较矮的话 看不见前面9个人的帽子 就团灭了

    • wf php、前端 2016/01/19

      “10个人所能做的只有当他被魔鬼问到的时候,答白色或者黑色”
      一个人只能回答一种颜色啊,没明白怎么能活9个

    • 王先生 学生 2016/01/19

      对 就是9个 最后一个有50%的机会活下来 因为他的回答是前面的黑或白帽子的奇偶数

    • 对策是商量好了,可是真的一定要执行吗?那么好吧,我们来执行:最高的那个,你在末尾一定要怎样怎样,然后前面9个100%能活下来,可他却只有50%能活下来,凭什么?就因为他长的最高吗?而且最最重要的是,无论他给出的答案是黑还是白,他所能活下来的概率都是50%,那他就会想,如果他将答案反转,就会有两种结果,要么前面9个矮子陪葬,要么自己一个人独活,这个结果对于他好像勉勉强强还不错。所以当程序执行起来的时候,最后一个不管死活都不重要,但到第9个的时候,他有可能会像程序一样不知道为什么就挂了。前面9个人为了活命肯定都会老老实实根据后面的结果而给出自己的答案,最后一个则不然,那么第8个人就很重要了,他可能要在这里加上一个if-else判断,if第9个活了下来,那么最后一个人是好人,按照原计划执行;else第9个人挂了那他要将第9第10两个给出的答案反转得出自己的正确答案,然后他和他前面的矮子们都愉快的活了下来。所以真正执行时最坏的情况下结果是不是就不一样了?当然,结果不重要啦。毕竟真的有样的魔鬼吗?

  • 这题目找研发工程师,看来滴滴技术也不行啊。
    默认条件,所有的人都是理性的人按照绝对理性行动。否则无法解答。
    平均概率为9.5。
    每个人都说前面一个人的帽子颜色即可。第一个人反正也是猜,还不如说前面一个人的帽子颜色50%,但是能保证前面一个人100%活。
    就这样。小学没上过的人也能答的出来啊。

    • 琉言 前端 2016/01/20

      没那么简单

    • wf php、前端 2016/01/21

      哥们,欠考虑啊
      第10个说第9个的颜色,第9个回答第10个告诉他的颜色,第9个就没法再告诉第8个他的颜色了。。我刚开始也是这么想的,两两一组,只能5个100%活

      • 王先生 学生 2016/01/21

        对的,但第十个人可以回答前面帽子的奇偶数,然后后面的人就可以推导出自己帽子的颜色。

  • 袁言 工程师 2016/01/20

    最少可以存活9个人,操作如下:
    如果前面同伴的黑帽子总数为偶数:回答黑帽子;
    如果前面同伴的黑帽子总数为奇数:回答白帽子。
    证明如下:
    第10个人存活的概率为50%。
    第9个人通过第10人的回答,知道包括自己的帽子在内,前面帽子中黑帽子的总数是奇数还是偶数。
    。。。。
    前面的每一个人都可以通过后面人刚刚的回答知道这一情况,然后做出正确的回答。
    over

    • TimerBin 程序员 2016/01/20

      当1-9人黑帽子总和为偶数(第9人为黑帽子) 第10人说黑帽子 第10人的死活暂时不说;
      此时第9人为黑帽子 当他说时 由于1-8人黑帽子总和为奇数 ;
      所以他只能说白帽子 那么第9人 必死!

      • Flands   2016/01/20

        根据这个,差的情况,按第10-1顺序排列
        白黑白黑白黑白黑黑黑
        死死死死死死活活死活

    • 文少大哥哥   2016/01/20

      按这位袁言同学说的的操作方法举个例子:
      黑,黑,白,白,白,白,白,白,白,白。
      第10人看到前面的黑帽子总数为2,偶数,回答黑,死。
      第9人看到前面的黑帽子总数为2,偶数,回答黑,死。
      第8人看到前面的黑帽子总数为2,偶数,回答黑,死。
      第7人看到前面的黑帽子总数为2,偶数,回答黑,死。
      第6人看到前面的黑帽子总数为2,偶数,回答黑,死。
      第5人看到前面的黑帽子总数为2,偶数,回答黑,死。
      第4人看到前面的黑帽子总数为2,偶数,回答黑,死。
      第3人看到前面的黑帽子总数为2,偶数,回答黑,死。
      第2人看到前面的黑帽子总数为1,奇数,回答白,死。

      • 理解错了吧。
        如果前面同伴的黑帽子总数为偶数:回答黑帽子;
        如果前面同伴的黑帽子总数为奇数:回答白帽子。

        这个只是针对第十个人的,接下去九个直接回答正确答案就可以了

      • 袁言 工程师 2016/01/22

        这两句:
        「「「
        如果前面同伴的黑帽子总数为偶数:回答黑帽子;
        如果前面同伴的黑帽子总数为奇数:回答白帽子。
        」」」
        只针对第一个人,当时我就发现可能会被误会,但是评论不能修改,所以我也就不管了。

  • 烟雨遥   2016/01/21

    至少7人活下来,应该可以是8个人。
    前七个人的黑帽子总数可以用后三个人的颜色作为二进制表达出来。
    前七个人知道后三人表达数后,可以由自己看到的黑帽子数和听到黑帽子数,推算出自己头上的颜色,从而正确回答。

    后三个人表达的这个小于8的数的时候,可以通过选择从左到右方式,或从右向左方式,或取反方式(0,1,2换左右方向,3,4取反),保证第8个人活下来。前七个人自己做出合理判断,即可推断出后三个人表达的数字。

  • 疯子   2016/01/21

    这个和国王写囚犯头上数字是一样的,黑白代表0,1,最后一个人就说出来其他九个人的0和1的sum,其他人就算下排掉自己和最后一个人的sum,差值就是自己的,不是0就是1

    • 烟雨遥   2016/01/21

      假设前面有三个白帽子,最后的人怎么说?黑还是白?
      一个人的黑白色可以表达sum?

  • 王先生 学生 2016/01/21

    应该为9个人能百分之百的活下来,第十个人有50%的机会活下来
    理由如下:
    大家约定以白帽代表奇数,黑帽代表偶数,由于第十个人可以看到前九个人的帽子的颜色,所以第十个人可以回答出前九个人中白帽子(或黑帽子)的个数(这里假定为白帽子),第十个人回答的帽子颜色则为前面九个人中白帽子的奇偶数,而他自己有50%的机会活下来,第九个人回答的时候就可以根据前八个人的头上的帽子的颜色的个数来推断出自己头上帽子的颜色,以此类推,于是前九个人都可以回答出自己帽子的颜色,所以最后是9个人可以100%的活下来,第十个人有50%的机会活下来。
    个人看法,大家如果有什么好的方法,欢迎提出来共同分享。

  • YorkYan Android开发工程师 2016/01/21

    一直都是只看不说,今天就当露面了

    白:0
    黑:1

    假设10人颜色: 0 1 0 0 1 1 1 1 1 0

    思路: 约定第十个人以 0 为基础从第一个人开始就行异或运算,答出运算到9个人运算的结果(这里第十个人存活几率50%),第9个人同样从第一人开始进行异或运算,当到第八个人时,结合第十个人的说出的结果就可以知道自己的颜色了,以此类推。

    实践:
    根据上面的队形,第十个人要说的答案应该是 0,此时他居然幸运的存活下来了,第九个人同样运算到第八个人的答案是1,结合第十个人的答案0,就知道了自己的是1了

  • -阅水成川- 农民 2016/01/25

    假设第九人为黑,第十人就答白,如果对了,第八人为黑,第九人就黑白随意,第八人为白,第九人就答黑,,,,以此类推,总有六七个人能活下来吧。。