代码说

code is poetry

代码说    
碎碎念:自从你去到一个很远地方流浪,不知道现在已经变得怎么样。  换一换

真假精灵

作者:coderzheng 发布于:2014-7-22 21:35 Tuesday 分类:other  阅读模式

三个精灵A,B,C。一个说真话,一个说假话,一个可能说真话也可能说假话。
那么,如何提三个问题判断A、B、C三个精灵哪个说真话。。。
难点:三个精灵回答问题时只会说Da或者Ja,并且不知道Da,Ja是表示肯定还是否定。
解:

第一个问题(1):你是真精灵吗?假设回答为R,那么对ABC有两种可能的回答组合,如下:

     真     假     不确定
      R      R      R
      R      R      ^R
若回答为R,R,R则转到1a),否则转到1b)  
对1a),此时可以肯定R表示肯定,继续提第二个问题(2):R表示肯定吗?
对ABC三个精灵必然得到如下的回答:
真     假     不确定
R      ^R      R
R      ^R      ^R
     若为R,^R,R可知,^R为假精灵。继续对假精灵提问(假设假精灵已经找出为J2,另外两个精灵为J1,J3),
            3)J1是真精灵吗?若回答为R则J1是不确定精灵,J3是真精灵;若回答为^R则J1是真精灵,J3是不确定精灵
     若为R,^R,^R,则:R是真精灵,继续对真精灵提问(假设真精灵已经找出为J1,另外两个精灵为J2,J3),
            3')J2是假精灵吗?若回答为R,则:J2是假精灵,J3是不确定精灵;若回答为^R则J2是不确定精灵,J3是假精灵
           
对1b),显然^R是不确定精灵,继续提问(2):R表示肯定吗?
    回答为R是真精灵,回答^R的为假精灵。

标签: 难题集锦

你可以发表评论、引用到你的网站或博客,或通过RSS 2.0订阅这个博客的所有文章。
上一篇: chrome抽风了  |  下一篇:使用php数组的array_merge函数

评论(2)条

力杰 2014-07-31 15:17
水到底是真的精灵,还是没怎么看清楚啊啊
coderzheng 2014-07-31 22:56
@力杰:貌似我已经解释得足够清楚了,如果不明白我以后还是画图吧,这样会更清晰一点。