/*推理:一位法官在审理案件时,对涉及到的四位嫌疑犯A,B,C,D进行了审问:
A:"罪犯在B,C,D中"。
B:"我没有作案,是C偷的"。
C:"罪犯在A,D中"。
D:"B说的是事实".
经过充分的调查,证实四人中有两人说谎,一人是罪犯,请找出罪犯与说谎的人*/
//分析:ABCD每人都有两种可能,一共有2^4=16种情况,将罪犯记为1 说谎记为0
#include<stdio.h>
int main(void)
{
int A,B,C,D;//四个嫌疑犯
int LA,LB,LC,LD;//四句陈述
for(A=0;A<=1;A++)//循环判断A-D中的组合
{
for(B=0;B<=1;B++)
{
for(C=0;C<=1;C++)
{
for(D=0;D<=1;D++)
{
LA=B||C||D;
LB=!B&&C;
LC=(A+D==1);
LD=LB;
if(LA+LB+LC+LD==2 && A+B+C+D==1)
{
if(LA)
{
printf("A说的是真话\n");
}
if(LB)
{
printf("B说的是真话\n");
}
if(LC)
{
printf("C说的是真话\n");
}
if(LD)
{
printf("D说的是真话\n");
}
if(A)
{
printf("A是罪犯\n");
}
else if(B)
{
printf("B是罪犯\n");
}
else if(C)
{
printf("C是罪犯\n");
}
else
{
printf("D是罪犯\n");
}
}
}
}
}
}
}
08-14
864
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
12-06