要做一个程序员,逻辑思维能力是关键,写程序也是对该能力的一种锻炼,这里有一个测试题,你可以对自己现在的能力进行评诂。也希望大家回贴谈谈感受。
本题是柏林大学的一次考试题,要求在30分钟内做出,不过只有少于10%的人完成了要求。计分是这样的,共150分,从1到30分钟,每加1分钟减2分,那么30分钟答出就是90分,是及格分;从30分钟以后每加1分钟减1分。我当时用了22分钟,大家也试试,看自己能得多少分。
原题:有五位小姐排成一列,所有的小姐姓不同、穿的衣服颜色不同、喝不同的饮料、养不同的宠物、吃不同的水果。
钱小姐穿红色衣服;翁小姐养了一只狗;陈小姐喝茶;穿绿衣服的站在穿
白衣服的左边;穿绿衣服的小姐喝咖啡;吃西瓜的小姐养鸟;穿黄衣服的小姐吃
梨;站在中间的小姐喝牛奶;赵小姐站在最左边;吃橘子的小姐站在养猫的旁边;
养鱼的小姐旁边的那位吃梨;吃苹果的小姐喝香槟;江小姐吃香蕉;赵小姐站在
穿蓝衣服的小姐旁边;喝开水的小姐站在吃橘子的小姐旁边;请问哪位小姐养蛇?
你可以收到题后,看三遍,然后开始计时做题。
下面引号中是答案,为了大家不受影响,引号内的答案全是白色,你选中这一块,反色即可看到答案。
符加声明:大家一定要推出全部的答案,并且要没有相当然的部分,这样才能算推出,一定要以这个标准来做题。当然我不是出题老师,标准在你心,是否作弊在你心。
补记一: 其实这个问题的关键在于方法,现在最好的方法就是xlili和Random的方法,这也是许多人能想到的,不过不同的人思路明晰化程度不同。
我想说的是难道没有别的方法了,我开始曾想用数组的方法,后来发觉很乱,也是用了以上所说的矩阵方法,希望有人能有别的方法,不一定要是最好的方法。
如果你已做完该题,你现在在回想一下,看看你刚才的思路,你会明白自己在大多数情况下思考问题的方式。
我的初衷就是你关心自己思考问题的方式么?你往往怎么思考问题?而这道题毕竟只是一道题,它真正的来源是爱因斯坦的一道题,被大家改得很烂了。
补记二:lonsh的推理比较明晰,不过相对来说jc77的还是直观些,winion 提出的解法已是比较明确的数学算法。希望HaoGeGe能把自己的方法说一下,我也很感兴趣。
希望大家在以下三点上做文章,回贴尽量以此为中心(因为推理方法大家都谈得不少了):
1、建立一个模型
2、写出相应的数学算法
3、程序实现方法(什么语言都可以)
答案如下(双引内)
“赵小姐穿黄色衣服,喝白开水,吃梨,奍猫
陈小姐穿蓝色衣服,喝茶,吃橘子,奍鱼
钱小姐穿红色衣服,喝牛奶,吃西瓜,奍鸟
江小姐穿绿色衣服,喝咖啡,吃香蕉,奍蛇
翁小姐穿白色衣服,喝香槟,吃苹果,奍狗”