有a。b。c。d。e,每個人額頭上貼了一張或黑或白的紙。5人對做,都可看到其他人的顏色,但不知道自己的。5人相互觀察:
A說 有3個貼白紙,1人貼黑紙
B說 四人都是貼的黑紙
C說 有1個人貼白紙,其他三人貼黑紙
D說 4人都是白紙E什麼也沒說
現在已知額頭黑紙的人都說的是謊話,貼白紙的人說的是實話。編程,輸出這五人中額頭貼白紙得人選和貼黑紙的人選。各位哥哥姐姐幫幫忙謝謝
我用數組a[1],a[2],a[3],a[4],a[5]表示a,b,c,d,e;
再用1,0分別表示白,黑,即a[1]=0,表示a是白色紙,
#include<stdio.h>
int a[6];
judg(int i)
{ int b;
if(i>5)
{ b=1;
if(b)
{if(a[1]==0)
{if((a[2]+a[3]+a[4]+a[5])==3)b=0;else b=1;}//表示b,c,d,e中有3個白色紙則b=0,否則b=1;
else
{if((a[2]+a[3]+a[4]+a[5])==3)b=1;else b=0;} //表示b,c,d,e中有3個白色紙則b=1,否則b=0;
}
if(b)
{if(a[2]==0)
{if((a[1]+a[3]+a[4]+a[5])==0)b=0;else b=1;} //表示a,c,d,e中有3個白色紙則b=0,否則b=1;
else
{if((a[1]+a[3]+a[4]+a[5])==0)b=1;else b=0;} //表示a,c,d,e中有3個白色紙則b=1,否則b=0;
}
if(b)
{if(a[3]==0)
{if((a[1]+a[2]+a[4]+a[5])==1)b=0;else b=1;} //表示a,b,d,e中有3個白色紙則b=0,否則b=1;
else
{if((a[1]+a[2]+a[4]+a[5])==1)b=1;else b=0;} //表示a,b,d,e中有3個白色紙則b=1,否則b=0;
}
if(b)
{if(a[4]==0)
{if((a[1]+a[2]+a[3]+a[5])==4)b=0;else b=1;} //表示a,b,c,d中有3個白色紙則b=0,否則b=1;
else
{if((a[1]+a[2]+a[3]+a[5])==4)b=1;else b=0;} //表示a,b,c,d中有3個白色紙則b=1,否則b=0;
}
if(b)
{
if(a[1]==0)printf("a:black ");else printf("a:white ");
if(a[2]==0)printf("b:black ");else printf("b:white ");
if(a[3]==0)printf("c:black ");else printf("c:white ");
if(a[4]==0)printf("d:black ");else printf("d:white ");
if(a[5]==0)printf("e:black ");else printf("e:white ");
printf("
");
}
}
else
{
a[i]=0;judg(i+1);
a[i]=1;judg(i+1);
}
}
main()
{
judg(1);
}