穷举法~~~~~
跟下面这个差不多~~~~
/*有A,B,C,D,E,五人,每人额头上都帖着一张或黑或白的纸。五人对坐,每人都能看见别人的,
但看不见自己的。而且黑的撒谎,白的诚实。
A说:“我看见有三个人的是白纸,一人是黑纸”。
B说:“我看见四个人的都是黑纸”。
C说:“我看见有一个人的是白纸,三个人是黑纸”。
D说:“我看见四个人的都是白纸”。
E什么也没有说。*/
#include <stdio.h>
main()
{
int a,b,c,d,e; //黑色为0,白色为1
for(a=0;a<=1;a++) //5个人头上帖纸的全部可能
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 %s:\n",a?"White":"Black");
printf("B is %s:\n",b?"White":"Black");
printf("C is %s:\n",c?"White":"Black");
printf("D is %s:\n",d?"White":"Black");
printf("E is %s:\n",e?"White":"Black");
}
}
[此贴子已经被作者于2007-10-18 10:15:37编辑过]