<pre name="code" class="cpp">/* 第 22 题: 有 4 张红色的牌和 4 张蓝色的牌,主持人先拿任意两张,再分别在 A、B、C 三人额头上 贴任意两张牌,A、B、C 三人都可以看见其余两人额头上的牌,看完后让他们猜自己额头 上是什么颜色的牌,A 说不知道,B 说不知道,C 说不知道,然后 A 说知道了。 请教如何推理,A 是怎么知道的。如果用程序,又怎么实现呢? */ /* 因为第一次三者都说不知道,则两两相加不可能出现四红或四蓝, 则A,B,C中必须至少有一个是红蓝。 A看B和C,如果B和C中是两红和两蓝, 则A第二次可以确定自己是红蓝。同理B和C也是,则这种方式成立。 假设rb bb rr A不知道 B不知道:说明A可能bb rb (rr不可能);C不知道说明A可能rr rb 所以A知道自己是rb 剩下二种组合方式:三个人都是红蓝;两个人红蓝,一个人是两红或两蓝。 三个人都是红蓝,三个人都是红蓝,A就不说了,可以判断。 rb rb rb A不知道 B不知道:说明A可能bb rb rr ;C不知道说明A可能rr rb bb 所以A知道自己是rb 如果A,B,C中有一个是两红和两蓝,那么另两个就可以第二次判断出自已是红蓝。 rb rr bb 同上 而此人只能判断出自己是两红或者是两蓝,那么A不能判断自己,所以A是红蓝, B和C是中有一个是红蓝,一个是两红或两蓝. 所以A是红蓝,B和C不确定。 */
/* 第 23 题: 用最简单,最快速的方法计算出下面这个圆形是否和正方形相交。" 3D 坐标系原点(0.0,0.0,0.0) 圆形: 半径 r = 3.0 圆心 o = (*.*, 0.0, *.*) 正方形: 4个角坐标; 1:(*.*, 0.0, *.*) 2:(*.*, 0.0, *.*) 3:(*.*, 0.0, *.*) 4:(*.*, 0.0, *.*) */ /* 计算正方形四个顶点和圆的关系,分3中情况: 1.圆内圆外都有顶点,相交 2.4个都在圆内,不相交 3.4个都在圆外,计算圆心到每条方形每条边的线段边的垂线交点 (交点必须在边的线段上), 如果有一个交点在圆内,相交。 否则,不相交。 */