: 他手上有黑桃A~K,共13张牌。他从中选出一张牌,要我猜出那张牌是什麽牌。他说我可以
: 问他3个问题,他会回答YES或NO!
: 而这3个问题,他其中一个会说谎。(另外两个会诚实回答)
板友证明了用二元问法6次解不开13张
我刚研究出了6次解13张的方法,当然这要用一点小技巧
不过解的过程要应回答而灵机应变,烦琐的部分我尽量简化
简单作弊法:
问 你这一次要回答NO对不对?
此时他不论回答yes 或no都将说谎,然後解决
这问题再问一次则回答将头脑爆炸,我们只要解题就好了
後面不用这种技俩
首先一般问法还是把数字分2堆,回答说正解所在那边为Y,另一边则给N
当有一个数字得到2个N之後就可以把它淘汰掉了(至少给它N的其一是实话)
接下来我会用表示法
13V 0N Q6 表示还有13个数字没淘汰掉,0个数字给过N,还可以问6次问题
介绍双方策略:
问方:1.尽量制造每个数字都有N,因为这样就表示前面回答已有说谎,不然就没答案了
此时只要 2的Q次方不小於V就行,一般的二元问就行了,後面当作已知
2.其次尽量制造越多N越好,这样才容易淘汰掉数字
综合上面2项,当分2堆数字不同量时,把没N的数字放到少的那一边,这样至少符合一项策略
答方:1.和上面问方策略作对
2.尽量让之前全部是实话时,留下更多没N的数字
先证明3V 2N Q2可解,之後此状况或更佳当做已知可解
一般3V Q2是不能解的,但是只要有2N就行
例如剩下1,2,3 其中2,3有N
3V 2N Q2 N:2,3 Y:1
问 1~2 3
答 Y N
***
答 N Y
2V 2N Q1 已说谎,最後一问解
***
2V 1N Q1 N:2 Y:1
问:1+1=2对不对?
用一个完全无关的问题把最後一问消耗掉!
若现在说谎表示之前没N的为正解
若说实话,则之前说谎,正解为那1N
游戏开始
第一回合
13V 0N Q6
问 1~6 7~13
答 N Y
显然要回答在多的那一堆
第二回合
13V 6N Q5 N:1~6
问 1~7 8~13
答 Y N
***
答 N Y 的话会立即淘汰1~6,变成
7V 1N Q4 N:7 Y:8~13
问 7~9 10~13
答 Y N 3V 2N Q3已知解
答 N Y 5V 5N Q3已知解
***
第三回合
13V 12N Q4 N:1~6 8~13 Y:7
问 2~7 1,8~13 让没有N的7进入少的那堆是关键
答 Y N (这里全淘汰掉了)
***
答 N Y 全都有N了,淘汰2~6
8V 8N Q3 N:1,7~13
已经说谎,刚好2的3次方是8解决
***
第四回合
6V 5N Q3 N:2~6 Y:7
问 2~4 5~7
答 Y N 淘汰5,6
4V 4N Q2 已知解
***
答 N Y 淘汰2~4
3V 2N Q2 已知解
***
恭喜破关!
※ 编辑: kohttp 来自: 210.68.38.81 (10/27 10:41)