一个村子里有三个居民,他们或者是人类或者是狼人,他们约定人类总是说真话,而狼人总是说假话。
Advik说:“我们三个中至少有一个是狼人。”
Bardia说:“我们三个中至少有一个是人类。”
Cherry说:“我们三个中恰好有两个狼人。”
那么以下六句中哪个肯定是真的?
只有Advik是狼人
只有Bardia是狼人
只有Cherry是狼人
他们中有两个狼人
他们三个都是狼人
他们中没有狼人
#include <stdio.h>
int fun1(int a,int b,int c)
{
int flag = 1;
if (a == 0)
{
if (b + c ==0)
{
flag = 0;
return 0;
}
}
else
return 0;
if (flag == 1)
return 1;
}
int fun2(int a, int b,int c)
{
if (b == 0)
return 1;
else
{
if (a + c == 2)
return 0;
else
return 1;
}
}
int fun3(int a, int b, int c)
{
if (c == 0)
{
if (a + b != 2)
return 0;
else
return 1;
}
if (c == 1)
{
if (a + b == 1)
return 0;
else
return 1;
}
}
int main()
{
/*a=1,A是狼人,同理推b,c*/
int a, b, c;
for (a = 0; a <= 1; a++) {
for (b = 0; b <= 1; b++) {
for (c = 0; c <= 1; c++) {
if (fun1(a, b, c) && fun2(a, b, c) && fun3(a, b, c))
{
if (a == 0)
printf("Advik是居民\n");
if (a == 1)
printf("Advik是狼人\n");
if (b == 0)
printf("Bardia是居民\n");
if (b == 1)
printf("Bardia是狼人\n");
if (c == 0)
printf("Cherry是居民\n");
if (c == 1)
printf("Cherry是狼人\n");
}
}
}
}
}
这个代码可以简化,然而我懒得