【编程题目】有 4 张红色的牌和 4 张蓝色的牌,主持人先拿任意两张,再分别在 A、B、C 三人额头上贴

第 22 题(推理):
有 4 张红色的牌和 4 张蓝色的牌,主持人先拿任意两张,再分别在 A、B、C 三人额头上贴
任意两张牌,A、B、C 三人都可以看见其余两人额头上的牌,看完后让他们猜自己额头上
是什么颜色的牌,A 说不知道,B 说不知道,C 说不知道,然后 A 说知道了。
请教如何推理,A 是怎么知道的。
如果用程序,又怎么实现呢?

推理:设A有x1张红色牌 y1张蓝色牌

           B有x2张红色牌 y2张蓝色牌

           C有x3张红色牌 y3张蓝色牌

都不知道显然没有一个人能看到4张相同颜色的牌。以C为例来说满足下面的不等式

x1,x2,y1,y2已知,

    2≥x3,y3≥0

    x3+y3 = 2

    x1 + x3 ≤ 3

    x2 + x3 ≤ 3

    y1 + y3 ≤ 3

    y2 + y3 ≤ 3

只有在 x1、x2、y1、y2中有两个为2时才能得到唯一解。即如果C知道,分布一定是:

           A(rr) B(bb) C(rb) 或 A(bb) B(rr) C(rb)

代码:我不会用代码求不等式.....没写出来。

原文地址:https://www.cnblogs.com/dplearning/p/3972960.html