猜牌游戏 【微软面试100题 题二十二题】 - tractorman - 博客园
有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。
http://blog.csdn.net/mmoojing/article/details/17098611
http://www.cnblogs.com/v-July-v/archive/2011/01/10/1983692.html
2.
B C A
bb rr bb/RR/BR,=>A:BR
rr bb =>A:BR
3.
B C A
BR BB RR/BR, =>A:BR
//推出A:BR的原因,
//如果 A是 RR,
//那么,当ABC都说不知道后,B 最后应该知道自己是BR了。
//因为B 不可能 是 RR或BB。
4.
B C A
BR BR BB/RR/BR
//推出A:BR的原因
//i、 如果,A是 BB,那么B=>BR/RR,
//如果B=>RR,那么一开始,C就该知道自己是BR了(A俩蓝,B俩红)。(如果C.A俩蓝,那么B就一开始知道,如果C.B俩红,那么A一开始就知道,所以,论证前头,当B=>RR,那么一开始,C就该知道自己是BR)。
//如果B=>BR,那么,同样道理,C一开始也该知道自己是BR了。
有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。
http://blog.csdn.net/mmoojing/article/details/17098611
额头上两张牌的组合情况有三种:红红,红蓝,蓝蓝
基本规则:
首先A说不知道,说明B和C头上所有牌不是同一种颜色。
B说不知道,说明A和C头上所有牌不是同一种颜色。
C说不知道,说明A和B头上所有牌不是同一种颜色。
根据基本规则,可假设B和C有以下可能情况:
1)B是红红,C是蓝蓝,假设A是红红,C可推自己是蓝蓝;假设A是蓝蓝,B可推自己是红红;所以可推A是红蓝
2)B是红红,C是红蓝,假设A是蓝蓝,A说不知道,B说不知道,C可推自己是红蓝,但C说不知道,所以可推A是红蓝
3)B是红蓝,C是红红,假设A是蓝蓝,A说不知道,B说不知道,C说不知道,此时是B可推自己是红蓝而不是A说知道,所以可推A是红蓝
4)B是红蓝,C是蓝蓝,假设A是红红,A说不知道,B说不知道,C说不知道,此时是B可推自己是红蓝而不是A说知道,所以可推A是红蓝
5)B是红蓝,C是红蓝,假设A是蓝蓝或红红,A说不知道,B说不知道,C说不知道,此时是B可推自己是红蓝而不是A说知道,所以可推A是红蓝
6)B是蓝蓝,C是红蓝,假设A是红红,A说不知道,B说不知道,C可推自己是红蓝,但C说不知道,所以可推A是红蓝
7)B是蓝蓝,C是红红,假设A是红红,B可推自己是蓝蓝;假设A是蓝蓝,C可推自己是红红;所以可推A是红蓝
http://www.cnblogs.com/v-July-v/archive/2011/01/10/1983692.html
4张 r 4张b
有以下3种组合:
rr bb rb
有以下3种组合:
rr bb rb
1.B,C全是一种颜色
B C A
bb.rr bb.rr
B C A
bb.rr bb.rr
2.
B C A
bb rr bb/RR/BR,=>A:BR
rr bb =>A:BR
3.
B C A
BR BB RR/BR, =>A:BR
//推出A:BR的原因,
//如果 A是 RR,
//那么,当ABC都说不知道后,B 最后应该知道自己是BR了。
//因为B 不可能 是 RR或BB。
4.
B C A
BR BR BB/RR/BR
//推出A:BR的原因
//i、 如果,A是 BB,那么B=>BR/RR,
//如果B=>RR,那么一开始,C就该知道自己是BR了(A俩蓝,B俩红)。(如果C.A俩蓝,那么B就一开始知道,如果C.B俩红,那么A一开始就知道,所以,论证前头,当B=>RR,那么一开始,C就该知道自己是BR)。
//如果B=>BR,那么,同样道理,C一开始也该知道自己是BR了。
//ii、 如果A是RR....
//iii、最后,也还是推出=>A:BR
//至于程序,暂等高人。
Read full article from 猜牌游戏 【微软面试100题 题二十二题】 - tractorman - 博客园//至于程序,暂等高人。