主题:[原创]编程解爱因斯坦难题正式版
if007
[专家分:650] 发布于 2006-04-21 22:23:00
/*************************************************************
简介:
传说下面是爱因斯坦在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 楼
暖颜 [专家分:0] 发布于 2006-05-02 09:50:00
对应(国籍): 挪 丹 英 德 瑞
---------------------------------------
对应(房色) 黄 蓝 红 绿 白
对应(宠物) 猫 马 鸟 鱼 狗
对应(饮料) 水 茶 奶 咖 酒
对应(香烟) dun blu pal pri ble
其实不需要编程的,只要拿一张纸划一下就出来了嘛!干嘛那么罗嗦啊?
22 楼
暖颜 [专家分:0] 发布于 2006-05-02 09:55:00
对应(国籍): 挪 丹 英 德 瑞
---------------------------------------
对应(房色) 黄 蓝 红 绿 白
对应(宠物) 猫 马 鸟 鱼 狗
对应(饮料) 水 茶 奶 咖 酒
对应(香烟) dun blu pal pri ble
其实不需要编程的,只要拿一张纸划一下就出来了嘛!干嘛那么罗嗦啊?
23 楼
tossboy [专家分:160] 发布于 2006-05-02 10:51:00
好象代码有问题呀?
这是正确的代码吗?
24 楼
goal00001111 [专家分:4030] 发布于 2006-05-02 11:24:00
曾经写过一个,用穷举,楼主比较一下:
http://blog.programfan.com/article.asp?id=9079
25 楼
if007 [专家分:650] 发布于 2006-05-02 12:15:00
信息时代了,舞大刀走冷兵器的路嘛,似乎不太与时俱进哦, 由其对"女孩子",哈哈.
:) 不过似乎不用同一句话占了好几楼吧?
是正确的代码啊.我在VC 6.0运行的.
如果有问题,可能是贴在网页上时它的格式有些地方被改动了,不过这是小问题,编译器会告诉你的.又或是你用的不是VC 6.0
to 24楼. 偶看了,写得很有特色.
虽是穷举,但加了些模拟人的思考.例如说,人解这题,是有线索摸下去的,这点在你的程序里某些地方有体现,效率会高一些.不错不错 :)
而我这个程序则是完全穷举,可能通用性强一些.
不过有点美中不足的地方就是你的编程风格...
(编程风格也是程序的重要质量...)
:)
26 楼
lt19870917 [专家分:750] 发布于 2006-05-02 12:18:00
佩服,这果然是一道极难的题.看来我是愚顿了,我怎么感觉需要很强的思维去演绎,谁能给我个思路
27 楼
lt19870917 [专家分:750] 发布于 2006-05-02 12:21:00
能用纸画出来的,难道还不会用来编程吗?
28 楼
if007 [专家分:650] 发布于 2006-05-02 12:31:00
用纸划用的也是穷举和追线索.
不一样的,用纸划难度降低很多的.
但是你用计算机的话,你除了考虑用纸划的那两个方法外,你还要思考怎么把人的自然语言转化为计算机的逻辑语言,和怎样让计算机实现人的穷举和追线索的方式, 再怎样把结果用人的自然语言表示出来,最后你还要考虑这程序的结构, 和一些函数接口问题之类繁多的细节问题.(我是指通用程序,并不单指这题 :) )
29 楼
lt19870917 [专家分:750] 发布于 2006-05-02 13:14:00
我说的是用纸快速解出,用穷举和追线索的快速方法,
否则,给足够的时间,那就不是99%的人解不出了
30 楼
hanshuyujifen [专家分:800] 发布于 2006-05-10 11:39:00
1 2 3 4 5
国籍 挪威 丹麦 英 德 瑞典
烟 DUNHILL BLENDS PALL MALL PRINCE BLUE MASTER
饮料 水 茶 牛奶 咖啡 啤酒
宠物 猫 马 鸟 鱼 狗
房子 黄 蓝 红 绿 白
手算的不知对否,35分钟!
我来回复