问题: abc三人是3个族true(说真话)liar(说假话)doubleface(可能真也可能假)
/*************************************************************************
> File Name: 50.c
> Author: ma6174
> Mail: ma6174@163.com
> Created Time: 2017年05月18日 星期四 19时37分24秒
************************************************************************/
#include<stdio.h>
int main()
{
int a, b, c, aa, bb, cc;
for(a = 0; a <= 1; a++)
for(b = 0; b <= 1; b++)
for(c = 0; c <= 1; c++)
for(aa = 0; aa <= 1; aa++)
for(bb = 0; bb <= 1; bb++)
for(cc = 0; cc <= 1; cc++)
if(
a + aa != 2 && b + bb != 2 && c + cc != 2 &&
a + b + c == 1 && aa + bb + cc == 1 &&
(a && !aa && b && !bb || !a && !b) &&
!b &&
(c && !b && !bb || (!c && !cc) && (b || bb) || !c && cc)
)
{
printf("left man is %s\n", a ? "honest": (aa ? "double face":"liar"));
printf("middle man is %s\n", b ? "honest": (bb ? "double face":"liar"));
printf("right man is %s\n", c ? "honest": (cc ? "double face":"liar"));
}
}