有 A 、 B 、 C 、 D 、 E 五人,每人额头上都帖了一张黑或白的纸。五人对坐,每人都可以看到
其它人额头上的纸的颜色。五人相互观察后,
A 说: “ 我看见有三人额头上帖的是白纸,一人额头上帖的是黑纸。 ”
B 说: “ 我看见其它四人额头上帖的都是黑纸。 ”
C 说: “ 我看见一人额头上帖的是白纸,其它三人额头上帖的是黑纸。 ”
D 说: “ 我看见四人额头上帖的都是白纸。 ”
E 什么也没说。
现在已知额头上帖黑纸的人说的都是谎话,额头帖白纸的人说的都是实话。问这五人谁的 额
头是帖白纸,谁的额头是帖黑纸?
#include <stdio.h>
int main(void)
{
int a, b, c, d, e;
for (a=0; a<=1; ++a)
for (b=0; b<=1; ++b)
for (c=0; c<=1; ++c)
for (d=0; d<=1; ++d)
for (e=0; e<=1; ++e)
if ((a && b+c+d+e == 3 || !a && b+c+d+e != 3)
&& (b && a+c+d+e == 0 || !b && a+c+d+e != 0)
&& (c && a+b+d+e == 1 || !c && a+b+d+e != 1)
&& (d && a+b+c+e == 4 || !d && a+b+c+e != 4)) {
printf("a %s\n", a ? "white" : "black");
printf("b %s\n", b ? "white" : "black");
printf("c %s\n", c ? "white" : "black");
printf("d %s\n", d ? "white" : "black");
printf("e %s\n", e ? "white" : "black");
}
return 0;
}