演算法系列之七 愛因斯坦的思考題

2021-08-25 05:39:40 字數 1034 閱讀 5160

據說有五個不同顏色的房間排成一排,每個房間裡分別住著乙個不同國籍的人,每個人都喝一種特定品牌的飲料,抽一種特定品牌的煙,養一種寵物,沒有任意兩個人抽相同品牌的香菸,或喝相同品牌的飲料,或養相同的寵物。

問題是誰在養魚作為寵物?為了尋找答案,愛因斯坦給出了以下 15 條線索。

英國人住在紅色的房子裡;

瑞典人養狗作為寵物;

丹麥人喝茶;

綠房子在白房子的左邊;

綠房子的主人喝咖啡;

抽 pall mall 牌香菸的人養鳥;

黃色房子裡的人抽 dunhill 牌香菸;

住在中間那個房子裡的人喝牛奶;

挪威人住在第乙個房子裡面;

抽 blends 牌香菸的人和養貓的人相鄰;

養馬的人和抽 dunhill 牌香菸的人相鄰;

抽 bluemaster 牌香菸的人喝啤酒;

德國人抽 prince 牌香菸;

挪威人和住在藍房子的人相鄰;

抽 blends 牌香菸的人和喝礦泉水的人相鄰。

答案在下面

解答:首先看8,9 可以得出第乙個是挪威人 第三個是喝牛奶

根據14 得出第二個是藍房子

根據4 ,並且第二個是藍色,且第三個喝的是牛奶得出第四個是綠房子,第五個是白房子

根據1且第乙個是挪威,第二個是藍房子,從而得出第三個是英國紅色,所以第乙個是黃色

至此,所有房子顏色推論完畢

根據5,7,11 得出第二個人養馬

根據10和15 可以得出二號就是抽blends的人且一號喝的是礦泉水,養的是貓

根據12得出5號就是抽bluemaster的人,所以只剩2號沒得喝,即得出2號喝茶丹麥人

至此,第一和二個人推論完畢。

根據13得出第四個就是德國人抽的是prince,由2得出第五個人就是瑞典養狗,第五個人完畢

根據6得出第三個抽pallmall養鳥,至此第三個人推論完畢,剩第四德國人,只剩魚,匹配

演算法系列之七 愛因斯坦的思考題(下)

checkgrouprelation 函式需要根據當前組group的位置進行適當的處理,如果當前組是第乙個組或最後乙個組,則group的相鄰組只有乙個,就是最靠近group的組,其它情況下group的相鄰組都是兩個。checkgrouprelation 函式的實現如下 162bool checkgr...

演算法系列之七 愛因斯坦的思考題(下)

checkgrouprelation 函式需要根據當前組group的位置進行適當的處理,如果當前組是第乙個組或最後乙個組,則group的相鄰組只有乙個,就是最靠近group的組,其它情況下group的相鄰組都是兩個。checkgrouprelation 函式的實現如下 162boolcheckgro...

演算法系列之七 愛因斯坦的思考題(下)

checkgrouprelation 函式需要根據當前組group的位置進行適當的處理,如果當前組是第乙個組或最後乙個組,則group的相鄰組只有乙個,就是最靠近group的組,其它情況下group的相鄰組都是兩個。checkgrouprelation 函式的實現如下 162bool checkgr...