200分请教一个爱因斯坦出的逻辑分析问题,最好能告诉我具体的编程实现.谢谢(200分)

洪雪

Unregistered / Unconfirmed
GUEST, unregistred user!
问题可能很多人听过,这是爱因斯坦上世纪20年代出的题,牛b的他说世界上98%的人做不出来
#@!#!@%#$
1、在一条街上,有5座房子,喷了5种颜色。
  
  2、每个房里住着不同国籍的人
  
  3、每个人喝不同的饮料,抽不同品牌的香烟,养不同的宠物
  
  问题是:谁养鱼?
  
  提示:
  
  1、英国人住红色房子
  
  2、瑞典人养狗
  
  3、丹麦人喝茶
  
  4、绿色房子在白色房子左面
  
  5、绿色房子主人喝咖啡
  
  6、抽Pall Mall 香烟的人养鸟
  
  7、黄色房子主人抽Dunhill 香烟
  
  8、住在中间房子的人喝牛奶
  
  9、 挪威人住第一间房
  
  10、抽Blends香烟的人住在养猫的人隔壁
  
  11、养马的人住抽Dunhill 香烟的人隔壁
  
  12、抽Blue Master的人喝啤酒
  
  13、德国人抽Prince香烟
  
  14、挪威人住蓝色房子隔壁
  
  15、抽Blends香烟的人有一个喝水的邻居
 
以前听过这个问题,好象有人把详细的解法说了出来,当然不是以编程来实现的,
是用逻辑推导分析出来的,
答案就是:德国人养鱼!!
哈哈,可惜不记得详细的算法
 
我就是想知道如何用编程实现......
不过谢谢你.再看看别人好了
 
问题本身的解法是非常老套的,但是由于涉及的变量较多,普通人很难完成。
对电脑来说就简单了——穷举呀。
房子、颜色、国籍、饮料、香烟、宠物——每个的可能情况都有5!种
综合可能数为 (5!)^6=120^6=3e+12 ——电脑直接摆平也有一些困难!
根据给出的15个条件,一层一层的过滤...只要能够过虑到10^7数量级,就没问提了。
 
接受答案了.
 
顶部