邏輯推理與判斷(謎語博士的難題)

2021-07-24 13:44:59 字數 1449 閱讀 5796

謎博士的難題(1)

誠實族與說謊族是來自兩個荒島的不同民族,誠實族的人永遠說真話,說謊族的人永遠說假話。

謎語博士遇到三個人,他們可能是來自誠實族或者是說謊族的。博士問了他們乙個問題:

問第乙個人:「你們是什麼族?」,答「我們當中有兩個來自誠實族。」第二個人說「不要胡說,我們三個人中只有乙個誠實族的。」第三個人聽了第二個人的話後說「對,就是只有乙個誠實族的。」

根據他們的回答判斷它們分別是哪個組的。

問題分析與演算法設計:

假設三個人分別為a、b、c,若說謊其值為0,若誠實其值為1.

第乙個人: a&&a+b+c==2 || !a&&a+b+c!=2

第二個人: b&&a+b+c==1 || !a&&a+b+c!=1

第三個人: c&&a+b+c==1 || !a&&a+b+c!=1

利用窮舉法可以很容易的推斷出正確結果

程式設計與注釋:

#include

int main()}}

} return 0;}

謎博士的難題(2)

兩面族是荒島上的乙個新民族說話真一句假一句且真假交替。如果第一句為真,第二句就為假;如果第一句為假,第二句就為真。但第一句是真是假沒有規律。

迷博士遇到三個人,直到他們來自三個不同的民族。三個人並肩站在博士面前。

博士問左邊的人:「中間的人是什麼族?」,左邊人回答:「誠實族」。

博士問中間的人:「你是什麼族的?」,中間人回答:「兩面族」

博士問右邊的人:「中間的人究竟是什麼族的?」,右邊人回答:「說謊族」

請問:三個人分別是哪個民族

問題分析與演算法設計:

解題時要使用變數將這三個民族分別表示出來

變數a=1,表示:左邊的人是誠實族的

變數b=1,表示:中間的人是誠實族的

變數c=1,表示:右邊的人是誠實族的

變數aa=1表示:左邊的人是兩面族的

變數bb=1表示:中間的人是兩面族的

變數cc=1表示:右邊的人是兩面族的

則左邊的人是說謊族的可以表示為:a!=1且aa!=1  用c語言表示為!a&&!aa

則中間的人是說謊族的可以表示為:b!=1且bb!=1  用c語言表示為!b&&!bb

則右邊的人是說謊族的可以表示為:c!=1且cc!=1  用c語言表示為!c&&!cc

根據三個人來自三個民族的條件可知:

a+aa!=2 && b+bb!=2 && c+cc!=2  且a+b+c ==1 && a+b+c ==1

由左人回答推出:a && !aa && b && !bb || !a && !b

有中間人回答推出:!b

由右人回答推出:a && !b && !bb || (!c && !cc) && (b || bb) || !c && cc

程式設計

#include

int main()}}

}}}}

return 0;}

邏輯推理與判斷(委派任務)

file name reasoning.c creat data 2015.1.26 author zy 邏輯推理與判斷 委派任務 某偵察隊接到一項緊急任務,要求在a,b,c,d,e,f六個隊員 中盡可能多的挑若干人,但有以下限制條件 1.a和b兩個人至少去一人 a b 1 2.a和d不能一起去 a...

邏輯推理與判斷(誰是竊賊)

file name reasoning.c creat data 2015.1.26 author zy 邏輯推理與判斷 誰是竊賊 公安人員審問四名竊賊嫌疑犯。已知,這四人當中僅有一名是竊賊 還知道這四個人中每人要麼是誠實的要麼是說謊的,在回答公安人 員的問題中 甲說 乙沒有偷,是丁偷的 誠實b 0...

謎語博士的難題2

兩面族是荒島上的乙個新民族,他們的特點是說話真一句假一句且真假交替。如果第 一句為真,則第二句是假的 如果第一句為假的,則第二句就是真的,但是第一句是真 是假沒有規律。迷語博士遇到三個人,知道他們分別來自三個不同的民族 誠實族 說謊族和兩面族。三人並肩站在博士前面。博士問左邊的人 中間的人是什麼族的...