日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。以下为4个嫌疑犯的供词。
A说:不是我。 作者注释:(他的意思是说,凶手是B或C或D)
B说:是C。
C说:是D。
D说:C在胡说 作者注释:(他的意思是说凶手是A或B或C)
已知3个人说了真话,1个人说的是假话。
就是如此简单,小伙伴们,明白了吗?
A说:不是我。 作者注释:(他的意思是说,凶手是B或C或D)
B说:是C。
C说:是D。
D说:C在胡说 作者注释:(他的意思是说凶手是A或B或C)
已知3个人说了真话,1个人说的是假话。
现在请根据这些信息,写一个程序来确定到底谁是凶手。
分析:首先是酱紫的,我们用0代表不是凶手,1代表是凶手。
A:只能说自己是凶手(0)或者不是凶手(1);
B,C,D也是一样,他们说的可能行只有两种,即0或1。
#include
int main()
{
int a=0,b=0,c=0,d=0;
printf("0代表不是凶手;1代表是凶手\n");
for(a=0;a<2;a++) //有四个人,而每个人说的情况只用两种
{
for(b=0;b<2;b++)
{
for(c=0;c<2;c++)
{
for(d=0;d<2;d++)
{
if(((a==0)&&(c==1)&&(d==0)==1)+((a==0)&&(d==1)&&(d==0)==1)+((a==0)&&(c==1)&&(d==1)==1)+((a==0)&&(d==1)&&(d==0)==1))
{
if(a+b+c+d==1)
printf("a=%d b=%d c=%d d=%d\n",a,b,c,d);
}
}
}
}
}
}
就是如此简单,小伙伴们,明白了吗?