zoukankan      html  css  js  c++  java
  • 推理题:猜扑克牌

    有人从一手纸牌中选定一张牌,他把这张牌的花色告诉X先生,而把点数告诉了Y先生,两位先生都知道这手纸牌是:

    黑桃      J、8、4、2;

    红心  A、Q、4;

    方块  A、5;

    草花  K、Q、5、4。

    X先生和Y先生都很精通逻辑,很善于推理。他们之间有对话如下:

    Y先生:我不知道这张牌。

    X先生:我知道你不知道这张牌。

    Y先生:现在我知道这张牌了。

    X先生:现在我也知道了。

           黑桃 J   8   4   2
           红心 A   Q   4
           方块 A   5
           草花 K   Q   4   5
    
    Y知道点数,但说不知道这牌,所以符合该点数的牌一定有几种花色存在,A。Q。4。5都有可能
    X知道花色,并说确定Y不知道这牌,是因为在X所知道的花色里面,每一张牌的点数在其他的花色里面都有。因此排除 黑桃 和 草花。
    (反例:如果X得到的提示是草花,那么可能存在草花K,整副牌只有一张K,因此不可能知道Y先生无法确定,同理排除黑桃) Y说,现在我知道了,说明Y所知道的点数,在红心和方块里面是唯一存在的,排除红心A和方块A。 X说,我现在也知道了,说明排除了A后,该牌是X所知道的花色里面剩下的唯一一张牌,符合的只有方块5。

    还是不理解的参考这篇解释:

    第一步
    对X来说:
    黑桃:J 8 4 2
    红桃:A Q 4
    方块:A 5
    草花:K Q 5 4
     
    对Y来说
    2 黑桃
    4 红桃 草花
    5 方块 草花
    8 黑桃
    J 黑桃
    Q 红桃 梅花
    K 梅花
    A 红桃 方块
     
    第二步:
    Y先生:我不知道这张牌
     
    可以排除花色单张的,因为只有单张的话Y肯定就知道了。
    排除:黑桃2、 黑桃8、黑桃J、草花K
    注意到:这里是黑桃和草花的
     
    第三步:
    X先生:我知道你不知道这张牌
     
    (这句话很容易误解,很容易理解成:“我现在知道你不知道这张牌”,这里完全是对刚开始说的,应该理解成:“我本来就知道你不知道这张牌”,出题句子也不说清楚些)
    如果有单张的话,Y肯定就知道这牌了,既然X知道Y不知道是什么牌,那么说明牌的花色肯定不是单张里面的,排除了刚刚出来的黑桃和草花(第二步排除的)
     
    再一次排除黑桃和草花之后,所以现在的牌就有:
     
    对于X
    红桃:A Q 4
    方块:A 5
     
    对于Y
    A:红桃、方块
    Q: 红桃
    5:方块
    4:红桃
     
    第四步:
    Y:我现在知道那张牌了
     
    对于上面那个结果,双方已经是心知肚明,很明显,如果是点数是A的时候,Y肯定不知道是哪个花色(因为不是单张),所以排除了红桃A、方块A
    所以现在的结果是:
    对于X
    红桃: Q 4
    方块: 5
     
    第五步:
    X先生:现在我也知道了
     
    聪明的X先生马上意识到Y是一个多嘴的人,在最后的时刻出卖了自己(突然想到了《教父》),让别人看出来自己在想什么。
    答案已经很明显,既然Y已经知道了,那说明点数肯定是唯一的,花色肯定是单张的。
     
    所以,答案是:
    方块5

    现学现卖(小测试一下吧!)

    answer:black three

  • 相关阅读:
    tar命令,vi编辑器
    Linux命令、权限
    Color Transfer between Images code实现
    利用Eclipse使用Java OpenCV(Using OpenCV Java with Eclipse)
    Matrix Factorization SVD 矩阵分解
    ZOJ Problem Set
    Machine Learning
    ZOJ Problem Set
    ZOJ Problem Set
    ZOJ Problem Set
  • 原文地址:https://www.cnblogs.com/zjfjava/p/6601069.html
Copyright © 2011-2022 走看看