回 帖 发 新 帖 刷新版面

主题:[原创]编程解爱因斯坦难题正式版

/*************************************************************
简介:
传说下面是爱因斯坦在20世纪初出的一道测试题。他说世界上有99%的人回答不出这道题,
看看你是否属于另外的1%?题目如下:
前提: 
1 有五栋五种颜色的房子 
2 每一位房子的主人国籍都不同 
3 这五个人每人只喝一种饮料,只抽一种牌子的香烟,只养一种宠物 
4 没有人有相同的宠物,抽相同牌子的香烟,喝相同的饮料 
条件: 
1 英国人住在红房子里 
2 瑞典人养了一条狗 
3 丹麦人喝茶 
4 绿房子在白房子左边 
5 绿房子主人喝咖啡 
6 抽PALL MALL烟的人养了一只鸟 
7 黄房子主人抽DUNHILL烟 
8 住在中间那间房子的人喝牛奶 
9 挪威人住第一间房子 
10 抽BLENDS烟的人住在养猫人的旁边 
11 养马人住在DUNHILL烟的人旁边 
12 抽BLUE MASTER烟的人喝啤酒 
13 德国人抽PRINCE烟 
14 挪威人住在蓝房子旁边 
15 抽BLENDS烟的人的邻居喝矿泉水 
问题:谁养鱼? 
**************************************************************/
/*=============================================================
文件描述:    解养鱼问题
创建人:        陈泽丹        ,2006-4-20,  QQ:82314038
文件号:        2
修改次数:      
=============================================================*/
/*------------------------------------------------------------
算法描述:
(图是任意选定的)
--------------------------------
下标(国籍):0    1    2    3    4
对应(国籍):英    瑞    挪    德    丹
--------------------------------
数组值:    0    1    2    3    4
对应(房号)    0    1    2    3    4
对应(房色)    红    白    黄    蓝    绿
对应(宠物)    狗    马    鸟    猫    鱼
对应(饮料)    咖    茶    奶    水    酒
对应(香烟)    pal    dun    blu    pri    ble
---------------------------------
依照上表,以人为线索(下标),排列人的属性的各种组合,符合题目条
件者,最后输出结果。
--------------------------------------------------------------*/

回复列表 (共31个回复)

21 楼


对应(国籍): 挪    丹   英    德    瑞
---------------------------------------
对应(房色)   黄    蓝   红    绿    白 
对应(宠物)   猫    马   鸟    鱼    狗 
对应(饮料)   水    茶   奶    咖    酒
对应(香烟)  dun   blu   pal   pri    ble

其实不需要编程的,只要拿一张纸划一下就出来了嘛!干嘛那么罗嗦啊?

22 楼


对应(国籍): 挪    丹   英    德    瑞
---------------------------------------
对应(房色)   黄    蓝   红    绿    白 
对应(宠物)   猫    马   鸟    鱼    狗 
对应(饮料)   水    茶   奶    咖    酒
对应(香烟)  dun   blu   pal   pri    ble

其实不需要编程的,只要拿一张纸划一下就出来了嘛!干嘛那么罗嗦啊?

23 楼

好象代码有问题呀?
这是正确的代码吗?

24 楼

曾经写过一个,用穷举,楼主比较一下:
http://blog.programfan.com/article.asp?id=9079

25 楼

信息时代了,舞大刀走冷兵器的路嘛,似乎不太与时俱进哦, 由其对"女孩子",哈哈.
:)   不过似乎不用同一句话占了好几楼吧?

是正确的代码啊.我在VC 6.0运行的.
如果有问题,可能是贴在网页上时它的格式有些地方被改动了,不过这是小问题,编译器会告诉你的.又或是你用的不是VC 6.0

to 24楼. 偶看了,写得很有特色.
虽是穷举,但加了些模拟人的思考.例如说,人解这题,是有线索摸下去的,这点在你的程序里某些地方有体现,效率会高一些.不错不错 :)
而我这个程序则是完全穷举,可能通用性强一些.

不过有点美中不足的地方就是你的编程风格...
(编程风格也是程序的重要质量...)
:)

26 楼

佩服,这果然是一道极难的题.看来我是愚顿了,我怎么感觉需要很强的思维去演绎,谁能给我个思路

27 楼

能用纸画出来的,难道还不会用来编程吗?

28 楼

用纸划用的也是穷举和追线索.

不一样的,用纸划难度降低很多的.
但是你用计算机的话,你除了考虑用纸划的那两个方法外,你还要思考怎么把人的自然语言转化为计算机的逻辑语言,和怎样让计算机实现人的穷举和追线索的方式, 再怎样把结果用人的自然语言表示出来,最后你还要考虑这程序的结构, 和一些函数接口问题之类繁多的细节问题.(我是指通用程序,并不单指这题 :)  )

29 楼

我说的是用纸快速解出,用穷举和追线索的快速方法,
否则,给足够的时间,那就不是99%的人解不出了

30 楼

    1    2    3       4        5
国籍    挪威    丹麦    英       德        瑞典
烟    DUNHILL    BLENDS    PALL MALL  PRINCE   BLUE MASTER
饮料    水    茶    牛奶      咖啡        啤酒
宠物    猫    马    鸟       鱼       狗
房子    黄    蓝      红        绿      白


手算的不知对否,35分钟!

我来回复

您尚未登录,请登录后再回复。点此登录或注册