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

/**************************************** 
*  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;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值