猜牌游戏 【微软面试100题 题二十二题】
题目要求:
有4张红色的牌和4张蓝色的牌,主持人先拿任意两张,再分别在A、B、C三人额头上帖任意两张牌,A、B、C三人都可以看见其余两人额头上的牌,看完后让他们猜自己额头上是什么颜色的牌,A说不知道,B说不知道,C说不知道,然后A说知道了。
请教如何推理,A是怎么知道的。如果用程序,又怎么实现呢?
题目分析:
假设红用x表示,蓝用y表示,则可能有三种情况:
1. B C 可能的A ===> B C A
xx yy xx/yy/xy xx yy xy
分析:此种情况的A只能是xy。因为如果A是xx,则C看到BA的头上都是xx,则肯定会说自己是yy;同理如果A是yy。
2. B C 可能的A ===> B C A
xy xx xx/xy/yy xy xx xy
分析:此种情况的A也只能是xy。首先A不能是xx,因为C也是xx;假设A是yy,则最后应该是B说知道自己是xy(参考第一种情况);
3.B C 可能的A ===> B C A
xy xy xx/xy/yy xy xy xy
分析:此种情况的A也只能是xy。A为xx或yy就是情况2,此时最后说知道了的应该是B或者C,因此此种情况的A也只能是xy。
posted on 2014-10-29 11:52 tractorman 阅读(352) 评论(0) 编辑 收藏 举报