A说:不是我。
B说:是C。
C说:是D。
D说:C在胡说
int a, b, c, d;
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 == 1) + (d == 0)) == 3)
{
if (a + b + c + d == 1)
{
printf("a=%d,b=%d,c=%d,d=%d", a, b, c, d);
}
}
}
}
}
}
我们来看看这些条件
我们将0作为不是凶手,1作为是凶手
A说:不是我。 即a==0
B说:是C。 即c==1
C说:是D。 即d==1
D说:C在胡说 即d==0
三个人说的是真话,一个人说的是假话,那么可以得出逻辑判断和应该为3 即3真一假
同时我们还需要限定范围,只有一个凶手
a+b+c+d+e==1