C语言面试题,逻辑题:猜牌问题

题目

甲、乙他们知道抽屉里有 16 张扑克牌。

红桃:A、2
黑桃:3、4、5、6、7、8
梅花:2、3、9、J、Q
方块:A、3、J

这时:

  • 从这 16 张牌中挑出一张牌,并把这张牌的点数告诉甲、花色告诉乙。
  • 这时问甲和乙,你们能从已知的点数或花色推知这张是什么牌吗?

于是听到如下对话:

甲:不知道:
乙:我知道甲不知道;
甲:我现在知道了;
乙:我也知道了。

你知道这张是什么牌吗?为什么?

解答

答:答案是红桃2,解析如下

1. 统计牌数

根据:
红桃:A、2;
黑桃:3、4、5、6、7、8;
梅花:2、3、9、J、Q;
方块:A、3、J。
可知:
花色有:红桃、黑桃、梅花、方片
牌号有:2x2张,3x3张,4x1张,5x1张,6x1张,7x1张,8x1张,9x1张,Ax2张,Jx2张,Qx1张。

2.对话分析

第一句话:甲: 不知道

因为甲不知道,这表明这张牌一定要在不同的花色中出现,所以点数不能是唯一确定的。这意味着点数可能是 2、3、A、J中的一个。

第二句话:乙: 我知道甲不知道

对于乙说的“我知道你不知道这张牌。”这句话理解其实可以分成两种情况:

情况一:

这里乙本来就知道甲不知道是哪张牌。

乙自己能有底气说出这句话是因为他拿到的花色下全部都是不是一张牌的号码。

牌堆的牌号如下:
红桃:A、2;
黑桃:3、4、5、6、7、8;
梅花:2、3、9、J、Q;
方块:A、3、J。
可得:黑桃和梅花中都有只有一张牌的牌号出现

因此乙拿到的花色是:红桃或者方片。

情况二:

这里乙现在刚知道甲不知道是哪张牌.

结合乙说的第二句话,这里乙的发言暴露出来一个信息:乙拿到甲不知道是哪张牌的信息以后还不知道手牌是哪一张。

乙听到了甲的发言后知道了号码一定是 2、3、A、J中的一个

目前的牌号如下:

牌号2有红桃,梅花;
牌号3有黑桃、梅花、方片;
牌号A有红桃、方片;
牌号J有梅花、方片。

也可这样表示:
红桃:A、2;
黑桃:3;
梅花:2、3、J;
方块:A、3、J。

乙知道花色。

如果花色是黑桃,乙就已经知道答案不会再第四句中说“我也知道了”,所以黑桃3可以PASS;
因此在乙眼里看到的牌号就变成了这样:
红桃:A、2;
梅花:2、3、J;
方块:A、3、J。

第三句话:甲:我现在知道了

情况一

甲听了乙这么有底气的说了甲不知道是哪张牌后,也排除了黑桃和梅花。

这里甲眼里看到的牌堆如下:
红桃:A、2;
方块:A、3、J。

这里甲说了“我现在知道了”表明:这张牌的牌号不可能是A。

我们可以得出号牌可能是红桃2、方片3或是方片J

情况二

甲听乙也不知道,也排除了梅花3,但是此时甲说了甲现在知道了,所以甲手里的号牌应在牌堆里唯一。
由目前甲眼里的牌号:
红桃:A、2;
梅花:2、3、J;
方块:A、3、J。
可得:
牌号为梅花3。

第四句话:乙:我也知道了

情况一

这里乙听到了甲判断出了是哪张牌,首先排除了红桃A。

此时乙眼里的牌堆是这样的:
红桃:2;
方块:3、J。

乙知道自己的花色,他可以说出“我也知道了”,由此我们可以推断出这张牌是红桃2.

情况二

乙听甲知道了,就知道甲手里的牌号是目前牌堆里唯一,乙这里说了他也知道了,说明这张牌是梅花3。

3.结论

通过以上分析,小编觉得这张牌应该是红桃2,或者梅花3。

猜你喜欢

转载自blog.csdn.net/m0_66338176/article/details/133784660