今天看到一道很有意思的算法面试题,因为之前很少研究算法,好奇心加上暴躁的脾气,就决定一定要干掉这道题:
5个小姐站成一列 他们的姓不同 衣服颜色不同 和不同的饮料 样不同的宠物 吃不同的水果
1钱小姐穿红色的衣服,
2翁小姐养一只狗,
3陈小姐喝茶。
4穿绿衣服的站在白衣服的左边,
5绿衣服的再喝咖啡,
6中间的在喝牛奶,
7吃西瓜的养鸟,
8黄衣服的在吃梨,
9吃橘子的站在养猫的旁边,
10养鱼的旁边是吃梨的 ,
11吃苹果的在喝香槟,
12江小姐在吃香蕉,
13赵小姐站在蓝衣服的旁边,
14喝白开水的站在吃橘子的旁边,
15赵小姐站在最左边。
问 哪个小姐养蛇?
中间的仨小时的思考时间略过…..
直接上答案: 江小姐养蛇。
思路:
先排列出能直接显示的条件,然后一一推理。
根据 13赵小姐站在蓝衣服的旁边和15赵小姐站在最左边以及6中间的在喝牛奶
得出此图2.根据4穿绿衣服的站在白衣服的左边和5绿衣服的再喝咖啡,再结合上图,前者可以推出绿衣服只能在第三或第四纵列,后者推出,绿衣服喝咖啡只能在第四纵列。如图
而1告诉我们钱小姐穿红色的衣服,所以第三纵列是钱小姐,红色衣服,而最后的黄色则是赵小姐的衣服颜色。
接着根据8黄衣服的在吃梨和10养鱼的旁边是吃梨的 推出如下
基本上,大部分的人都能推到这里。但是接下来,从表面上看,剩下的信息似乎都没有什么大的价值。
但是仔细看其它条件 一一列出如下:
推测:
翁小姐要么在第四纵列 ,要么在第五纵列。
假设翁小姐在第四列:陈小姐肯定不能在第二列,因为如果陈小姐在第二列,则第五列就是江小姐了,如果第五列是江小姐,那香槟和苹果的条件就无法在任何一列满足了。
但是,如果陈小姐在第五列,江小姐在第二列,香槟和苹果的条件仍然无法满足。
因此,我们的推理是错误的,翁小姐不在第四列。
如果翁小姐在第五列:
陈小姐无疑 肯定在第三列
第四列就只能是江小姐了
而香槟和苹果只能在第五列了
剩下的白开水只能在第一列了
鸟和西瓜只能在第三列了
剩下最后两个条件:14喝白开水的站在吃橘子的旁边 和9吃橘子的站在养猫的旁边
推出:橘子在第二列,猫在第一列,剩下江小姐 就剩下蛇了哦