公安人員審問四名竊賊嫌疑犯。已知,這四人當中僅有一名是竊賊,還知道這四人中每人要麼是誠實的,要麼總是說謊。在回答公安人員的問題中:甲說:「乙沒有偷,是丁偷的。」
乙說:「我沒有偷,是丙偷的。」
丙說:「甲沒有偷,是乙偷的。」
丁說:「我沒有偷」
請根據這四人的談話判斷誰是盜竊者
首先我們假設甲是賊:此時甲說:乙沒有偷,這句為真,但是丁偷的是假話。那麼,甲說的話裡邊,就一句為真一句為假,不符合我們題目當中所說,每個人說的話全為真,或者全為假的要求。所以甲可以確定,肯定不是賊。
那麼下來,我們假設乙是賊:
甲說的」乙沒有偷,是丁偷的。」 這兩句話就全是假話,按照題意邏輯就完全沒有問題了。
再來看乙說的,「我沒有偷,是丙偷的。」顯然,這兩句話也全是假話,符合題意的邏輯。
再來看丙說的話,「甲沒有偷,是乙偷的。」如果乙是賊,這兩句話就成了真話了,所以也符合題的邏輯,
最後我們看丁說的話,「我沒有偷。」當然,就這一句話也是真話的,所以也符合題邏輯。
好那麼通過,假設,甲乙丙丁,其中乙個人是賊,然後判斷,四個人說的話,是全真還是全假,就可以得到,我們的結果了,答案是,乙是賊。
public class whoisthethief ;
isthief[i] = true;
//題目說每個人的話要麼全為真 要麼全為假
//所以有兩種可能 所以只要符合一句話全為真或全為假就可以
//所以一句話表示為全為真 和 全為假兩種形式 用或連線 足以符合題目要求
//最後還得符合四句話 所以 將他們使用者&&連線 必須符合題目的四個條件
if (((!isthief[1] && isthief[3]) || (isthief[1] && !isthief[3])) && // 甲說:「乙沒有偷,是丁偷的。」
((!isthief[1] && isthief[2]) || (isthief[1] && !isthief[2])) && // 乙說:「我沒有偷,是丙偷的。」
((!isthief[0] && isthief[1]) || (isthief[0] && !isthief[1])) && // 丙說:「甲沒有偷,是乙偷的。」
(!isthief[3] || isthief[3]))
}} }
}
邏輯推理與判斷(誰是竊賊)
file name reasoning.c creat data 2015.1.26 author zy 邏輯推理與判斷 誰是竊賊 公安人員審問四名竊賊嫌疑犯。已知,這四人當中僅有一名是竊賊 還知道這四個人中每人要麼是誠實的要麼是說謊的,在回答公安人 員的問題中 甲說 乙沒有偷,是丁偷的 誠實b 0...
邏輯推理題 偵探
題一 一天,湯姆叔叔和他妹妹尼撒一起在街上散步,突然湯姆叔叔想起來 對了,小外甥在前面那家店打工,我去看看他,順便買點東西。噢,我可沒有外甥。說完,尼撒就先回家了。請問 尼撒和那位神秘的外甥到底是什麼關係呢?題二 一位法官判處乙個人為死罪,這個人聽到訊息後非常恐懼。法官下令 從明天開始,到第七天傍晚...
一道邏輯推理題 猜生日
小明和小強都是張老師的學生,張老師的生日是m月n日,2人都知道張老師的生日是下列10組中的一天,張老師把m值告訴了小明,把n值告訴了小強,張老師問他們知道他的生日是哪一天?3月4日 3月5日 3月8日 6月4日 6月7日 9月1日 9月5日 12月1日 12月2日 12月8日 小明說 如果我不知道的...