1. 程式人生 > >一個有趣的演算法題

一個有趣的演算法題

今天看到一道很有意思的演算法面試題,因為之前很少研究演算法,好奇心加上暴躁的脾氣,就決定一定要幹掉這道題:

5個小姐站成一列 他們的姓不同 衣服顏色不同 和不同的飲料 樣不同的寵物 吃不同的水果
    1錢小姐穿紅色的衣服,
    2翁小姐養一隻狗,
    3陳小姐喝茶。
    4穿綠衣服的站在白衣服的左邊,
    5綠衣服的再喝咖啡,
    6中間的在喝牛奶,
    7吃西瓜的養鳥,
    8黃衣服的在吃梨,
    9吃橘子的站在養貓的旁邊,
    10養魚的旁邊是吃梨的 ,
    11吃蘋果的在喝香檳,
    12江小姐在吃香蕉,
    13趙小姐站在藍衣服的旁邊,
    14喝白開水的站在吃橘子的旁邊,
    15趙小姐站在最左邊。
問 哪個小姐養蛇?

中間的仨小時的思考時間略過…..
直接上答案: 江小姐養蛇。
思路:
先排列出能直接顯示的條件,然後一一推理。

  1. 根據 13趙小姐站在藍衣服的旁邊15趙小姐站在最左邊以及6中間的在喝牛奶
    得出此圖這裡寫圖片描述

    2.根據4穿綠衣服的站在白衣服的左邊5綠衣服的再喝咖啡,再結合上圖,前者可以推出綠衣服只能在第三或第四縱列,後者推出,綠衣服喝咖啡只能在第四縱列。如圖
    這裡寫圖片描述

1告訴我們錢小姐穿紅色的衣服,所以第三縱列是錢小姐,紅色衣服,而最後的黃色則是趙小姐的衣服顏色。
接著根據8黃衣服的在吃梨10養魚的旁邊是吃梨的 推出如下
這裡寫圖片描述

基本上,大部分的人都能推到這裡。但是接下來,從表面上看,剩下的資訊似乎都沒有什麼大的價值。
但是仔細看其它條件 一一列出如下:
這裡寫圖片描述

推測:
翁小姐要麼在第四縱列 ,要麼在第五縱列。
假設翁小姐在第四列:陳小姐肯定不能在第二列,因為如果陳小姐在第二列,則第五列就是江小姐了,如果第五列是江小姐,那香檳和蘋果的條件就無法在任何一列滿足了。
這裡寫圖片描述
但是,如果陳小姐在第五列,江小姐在第二列,香檳和蘋果的條件仍然無法滿足。
這裡寫圖片描述
因此,我們的推理是錯誤的,翁小姐不在第四列。

如果翁小姐在第五列:
陳小姐無疑 肯定在第三列
第四列就只能是江小姐了
而香檳和蘋果只能在第五列了
剩下的白開水只能在第一列了
鳥和西瓜只能在第三列了
這裡寫圖片描述
剩下最後兩個條件:14喝白開水的站在吃橘子的旁邊9吃橘子的站在養貓的旁邊

推出:橘子在第二列,貓在第一列,剩下江小姐 就剩下蛇了哦