张
李
王
i
j
k
i,j,k取值只能是0或1
0-说谎 1-真话
张三说李四说谎
2种情况i=0j=1或i=1j=0
结论i+j=1
李四说王二说谎
类似分析是 j+k=1
王二说张三、李四都是说谎 001 100 010 110
int i,j,k = 0;
for (i=0;i<=1;i++)
{
for (j=0;j<=1;j++)
{
for (k=0;k<=1;k++)
{
if (i+j == 1 && j+k == 1 && (k&&(j+k == 0) || !k&&(j+k != 0)))
{
printf("i=%d j=%d k=%d\n",i,j,k);
}
}
}
}
结果是i=0 j=1 k=0
只有李四说的真话