时间支配者雾妈妈:推理逻辑问题

来源:百度文库 编辑:中科新闻网 时间:2024/04/29 14:35:17
(1)有5栋5种颜色的房子
(2)每一位房子的主人国籍都不同
(3)这5人每人只喝一种饮料,只抽一种牌子的香烟,只养一种宠物
(4)他们没有相同的宠物,不抽相同牌子的香烟,不喝相同的饮料
提示:(1)英国人住在红房子里
(2)瑞典人养了一条狗
(3)丹麦人喝茶
(4)绿房子在白房子左边
(5)绿房子主人喝咖啡
(6)抽PALL MALL牌烟的人养了一只鸟
(7)黄房子主人抽DUNHILL牌烟
(8)住在中间那间房子的人喝牛奶
(9)挪威人住第一间房子
(10)抽混合烟的人住在养猫人旁边
(11)养马人住在抽DUNHILL牌烟的人旁边
(12)抽BLUEMASTER牌烟的人喝啤酒
(13)德国人抽PRINCE牌烟
(14)挪威人住在蓝房子旁边
(15)抽混合烟的人的邻居喝矿泉水
问题是: 谁养鱼???

这个是爱因斯坦出的测试题

这道题目5种要素,25个要点都已经列出但是干扰条件很多,并且各干扰条件互相作用,大家可以列出五五表格进行计算,可以暂时确定3个要素的位置,即挪威、蓝房子、和中间房子主人的牛奶!
因为各个要素的位置各不相同.所以大家先想一下:爱因斯坦出的题目是否会出现两种答案,因为挪威人在第一间房子:可能是左边数第一也可能是右边数第一,再去思考子要素的条件,5个房子,四个空间,出现两种甚至以上的情况的几率会有多大?大家看1、4、5、7、8、9、14都隐含告诉你房子的位置条件,房子条件告诉的最明确,所以先假设出房子的具体位置,然后是颜色的确定,中间的人喝的饮料已经确定.国籍和房子假设出来,基本上就剩三个要点的排列,根据香烟牌子的情况试座,大部分已经确定了,大家会发现为什么只有一项不合条件,其它的都已经OK了,这个时候试错千万不要着急,从整体看,颜色最多有两组的差异,对比饮料、宠物条件看怎么插入,只要你稍加分析,换一下房子的位置,国籍顺应跟着换下,多读几遍饮料、宠物、香烟的顺序,脑子里有了它们的大体位置!运气好的话,两遍就成功啦~~!舍大取小,敢舍敢分,内外兼得!

编程方法~~

利用数组和循环:
用5个数组(数组名)表示5种属性,用1、2、3、4、5分别代替各种属性的具体取值
数组的下标表示房间号,数组元素的取值表示某房间某属性的具体取值的代号
房间号(即数组下标)也表示方位,房间号小的为左,大的为右,下标相邻即房间相邻

房间 0 1 2 3 4

国家 挪 德 瑞 英 丹 ---> a[5]
颜色 绿 蓝 黄 红 白 ---> b[5]
饮品 咖 水 奶 酒 茶 ---> c[5]
香烟 blends prince dunhill blue pall ---> d[5]
宠物 鱼 猫 狗 马 鸟 ---> e[5]

取值 1 2 3 4 5 ---> 数组元素的取值

条件化简:
1 英---红 若a[i]=4,则b[i]=4
2 瑞---狗 若a[i]=3,则e[i]=3
3 丹---茶 若a[i]=5,则c[i]=5
4 绿---在白左面 若b[i]=1,b[j]=5,则i<j
5 绿---咖 若b[i]=1,则c[i]=1
6 鸟---pall 若e[i]=5,则d[i]=5
7 黄---dunhill 若b[i]=3,则d[i]=3
8 中间房子---奶 c[2]=3
9 挪---第1间房 a[0]=1
10 猫---有blends邻居 若e[i]=2,则d[i-1]=1 || d[i+1]=1
11 马---有dunhill邻居 若e[i]=4,则d[i-1]=3 || d[i+1]=3
12 酒---blue 若c[i]=4,则d[i]=4
13 德---prince 若a[i]=2,则d[i]=2
14 挪---有蓝邻居 ==〉b[1]=2
15 水---有blends邻居 若c[i]=2,则d[i-1]=1 || d[i+1]=1

C++源代码:

答案
绿房子 蓝房子 红房子 黄房子 白房子
挪威人 德国人 英国人 丹麦人 瑞典人
咖啡 矿泉水 牛奶 茶 啤酒
PALL MALL PRINCE 混合烟 DUNHILL BLUE MASTER
鸟 猫 马 鱼 狗