zoukankan      html  css  js  c++  java
  • 猜牌问题

    三个人:S先生、P先生、Q先生。

    抽屉里有16张扑克牌:

    红桃A、Q、4

    黑桃J、8、4、2、7、3

    草花K、Q、5、4、6

    方块A、5。

    教授从这16张牌中挑出一张牌来。

    把点数告诉P先生。

    把花色告诉Q先生。

    这时,约翰教授问P先生和Q先生:

    你们能从已知的点数或花色中推知这张牌是什么牌吗?

    于是,S先生听到如下的对话:

    P先生:我不知道这张牌。
    Q先生:我知道你不知道这张牌。
    P先生:现在我知道这张牌了。 
    Q先生:我也知道了。

    听罢以上的对话,S先生想了一想之后,就正确地推出这张牌是什么牌。 


    这个问题蛋疼的是第二句话。先从头说起。

    P知道点数后,还是不知道这张牌是什么。显然,这张牌出现了不止一次。

    比如,P知道点数是2,那就一定是黑桃2。因为没有别的2了。

    所以剩下的点数只有:A Q 4 5。

    蛋疼的地方来了,Q说:我知道你不知道这张牌。

    我开始一直想不明白,P拿着点数,说自己不知道之后,Q当然也能像我一样,知道P是不知道的。那他说这句话有什么用?

    看了网上的人解释之后,我才知道,应该这么思考Q:

    我知道了花色。如果花色是红桃,那么红桃里的A 4 Q,都出现了不只一次,你是肯定猜不到的。如果花色是方块,那么方块里的A 5也都出现了不只一次。如果花色的黑桃,那就蛋疼了,黑桃里的2 3 7 8 J只出现了一次。万一你这个P拿到了黑桃的牌,我就没办法保证,你不知道这张牌是什么。草花也是这样,草花6 K只出现了一次。万一你这个P拿到了草花的牌,我也不能保证,你不知道这张牌是什么。

    关键就在这里,如果牌是红桃、方块,我可以保证你知道点数也没用。如果牌是黑桃、草花,我就没办法保证你知道点数也没用了。这就是Q说的“我知道你不知道这张牌”的真正内涵。

    然后就比较简单了。

    P说,我他妈的知道了。于是他拿着手上的点数,在桌子上剩下的牌里找。如果他拿的是A,显然是不知道的。所以,他拿的就是4 5 Q中的一个。

    Q说,我他妈也知道了。于是,他拿着手上的花色,在桌上找,能找到就说明只能是方块5.

    最后就是方块5.

    最后说一句,PQS加教授,你们装逼遭雷劈。

    莫问前程
  • 相关阅读:
    Mongo DB intro
    java class 初始化
    Java Multi-Thread
    Java Exception
    PHP基础2
    Java STL
    javascript getElemet 获取元素 (转)
    javascript 异常处理
    javascript 输出
    LinkButton跳转页面及传递参数(转载)
  • 原文地址:https://www.cnblogs.com/dolphin007/p/4409416.html
Copyright © 2011-2022 走看看