您的位置:首页 > 其它

逻辑推理与判断(谜语博士的难题(1))

2015-01-27 22:00 357 查看
/****************************************
*  File Name  : reasoning.c
*  Creat Data : 2015.1.26
*  Author     : ZY
*****************************************/

/*逻辑推理与判断*/
/*谜语博士的难题(1)*/
/*诚实族和说谎族是来自两个荒岛的不同民族,诚实族的人永远说真话,
而说谎族的人永远说假话,谜语博士是个聪明人,他要判断所遇到的
人分别是哪个民族的。
谜语博士遇到三个人,知道他们可能是来自诚实族或说谎族的。为了调
查这三个人是什么族的,博士分别问了他们问题,这是他们的对话。
问第一个人:“你们是什么族?”。答:“我们之中有两个来自诚实族”
第二个人说:“不要胡说,我们三个人中只有一个诚实族的人”。
第三个人听了后说:“对,就是只有一个诚实族的。”
请根据回答判断他们分别是哪个族的?1 诚实族 0 说谎族

A : a&&a+b+c == 2 || !a&&a+b+c != 2
B : b&&a+b+c == 1 || !b&&a+b+c != 1
C : c&&a+b+c == 1 || !c&&a+b+c != 1*/

#include <stdio.h>
int main(void)
{
int a,b,c;
for(a = 0;a < 2;a++)
{
for(b = 0;b < 2;b++)
{
for(c = 0;c < 2;c++)
{
if((a&&a+b+c == 2 || !a&&a+b+c != 2)
&&(b&&a+b+c == 1 || !b&&a+b+c != 1)
&&(c&&a+b+c == 1 || !c&&a+b+c != 1))
{
printf("A is a %s.\n",a?"honest":"lier");
printf("B is a %s.\n",b?"honest":"lier");
printf("C is a %s.\n",c?"honest":"lier");
}
}
}
}
return 0;
}


/*谜语博士遇到四个人,知道他们可能是来自诚实族或说谎族的,为了调查这四个人是哪一族的,
博士照例进行俊文:“你们是什么族的?”
第一个人说:“我们四个人全都是说谎族”
第二个人说:“我们之中只有一个人是说谎族”
第三个人说:“我们四个人中有两个是说谎族”
第四个人说:“我是诚实族的” 1 诚实族 0 说谎族

A :a&&a+b+c+d == 0 || !a&&a+b+c+d != 0
B :b&&a+b+c+d == 3 || !b&&a+b+c+d != 3
C :c&&a+b+c+d == 2 || !c&&a+b+c+d != 2*/

#include <stdio.h>
int main(void)
{
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&&a+b+c+d == 0 || !a&&a+b+c+d != 0)
&&(b&&a+b+c+d == 3 || !b&&a+b+c+d != 3)
&&(c&&a+b+c+d == 2 || !c&&a+b+c+d != 2))
{
if(d == 1)
{
printf("D is a honest.\n");
return 0;
}
else
{
printf("D is a lier.\n");
return 0;
}
}
}
}
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: