北京交通大学

4.(10分)有A、B、C、D、E五人,每人额头上贴了一张或黑或白的纸。5人对坐,都可看到其他人的颜色,但都不知道自己的颜色。5人相互观察:
A说:有三人额头上贴白纸,一人额头上贴的是黑纸
B说:我看见其他四人额头上贴的都是黑纸
C说:有一人额头上贴白纸,其他三人贴的是黑纸
D说:我看见四人额头上贴的都是白纸
E什么也没说
现在已知额头贴黑纸的人说的都是谎话,额头贴白纸的人说的都是实话。编程,输出这五人中额头贴白纸的人选和额头贴黑纸的人选。

第1个回答  2010-12-11
Dev-C++:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
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 is pasted a piece of %s paper on his forehead.\n",
a?"white":"black");
printf("B is pasted a piece of %s paper on his forehead.\n",
b?"white":"black");
printf("C is pasted a piece of %s paper on his forehead.\n",
c?"white":"black");
printf("D is pasted a piece of %s paper on his forehead.\n",
d?"white":"black");
printf("E is pasted a piece of %s paper on his forehead.\n",
e?"white":"black");
}
system("PAUSE");
return 0;
}本回答被提问者和网友采纳
第2个回答  2010-12-09
答案:A、B、D额头贴的是黑纸,C、E额头贴的是白纸。
请参考!
相似回答