邏輯推理類問題:窮舉法+關係與邏輯運算子 綜合運用
1. 新郎和新娘
三對情侶參加婚禮,三個新郞為a、b、c,三個新娘為x、y、z。有人不知道誰和誰結婚,於是詢問了六位新人中的三位,但聽到的回答是這樣的:a說他將和x結婚;x說她的未婚夫是c;c說他將和z結婚。這人聽後知道他們在開玩笑,全是假話。請程式設計找出誰將和誰結婚。
【分析】可設三個新郎為x, y, z,窮舉所有情況;
根據三句假話可推斷:x!='a' x!='c' z!='c',且根據abc與xyz的一一對應關係可知x!=y y!=z x!=z。這些條件需同時成立。
源**:
#include int main()
} }return 0;
}
程式截圖:
2. 誰在說謊?現有張
三、李四和王五三個人:
張三說李四在說謊,
李四說王五在說謊,
而王五說張三和李四兩人都在說謊,
要求程式設計求出這3個人中到底誰說的是真話,誰說的是假話。
【分析】題中邏輯條件:由於不知道三個人說的真與假,故有以下幾種可能情況:
1. 張三真李四假或 張三假李四真(互反)
2. 李四真王五假或 李四假王五真(互反)
3. 王五真、張三李四均假 或 王五假、張三李四一真一假
可設i, j, k分別為張
三、李四、王五,真假分別用1和0表示,列舉所有可能情況。
源**:
#include int main()
}} }
return 0;
}
程式截圖:
3. 誰是竊賊警察審問四名竊賊嫌疑犯。已知,這四人當中僅有一名是竊賊,還知道這四個人中每人要麼是誠實的,要麼總是說謊。他們給警察的回答是:甲說:「乙沒有偷,是丁偷的」 ;
乙說:「我沒有偷,是丙偷的」 ;
丙說:「甲沒有偷,是乙偷的」;
丁說:「我沒有偷」。
請編寫程式,根據這四個人的回答判斷誰是竊賊。
【分析】可用變數abcd分別代表甲乙丙丁四人,1和0分別代表該日是/不是竊賊,則可得出以下條件:
b+d=1,b+c=1,a+b=1,a+b+c+d=1;
由於甲乙丙三人的話中都提到了兩個人,其中必有一人是小偷,所以在根據他們的話列出條件表示式時可不必關心誰說的是真話誰說的是假話(丁的話陳述了乙個「客觀條件」即四人中有僅有一名是竊賊,故無法判斷真假);
可依次設abcd為竊賊,代入前三個表示式相與後的表示式依次檢驗。
源**:
#include int main()
} if(i==1)
printf("甲是竊賊\n");
if(i==2)
printf("乙是竊賊\n");
if(i==3)
printf("丙是竊賊\n");
if(i==4)
printf("丁是竊賊\n");
return 0;
}
程式截圖:
4.委派任務某偵察隊接到一項緊急任務,要求在a、b、c、d、e、f六個隊員中盡可能多地挑若干人,但有以下限制條件:
(1)a和b兩人中至少去一人;
(2)a和d不能一起去;
(3)a、e和f三人中要派兩人去;
(4)b和c都去或都不去;
(5)c和d兩人中只能去乙個;
(6)若d不去,則e也不去。
問應當讓哪幾個人去?
【分析】可用abcdef 6個變數分別表示這6個人,某個人被選定去完成任務對應1,否則對應0,因此可得以下6個表示式:
a+b>=1,a+d!=2,a+e+f==2,b+c==0 || b+c==2(都去2,都不去0),c+d==1,d+e==0 || d==1(de都不去 或 d去,e去不去均可)
聯立求解即可。
源**:
#include int main()}}
}}} }return 0;
}
程式截圖:
藍橋杯 趣味邏輯推理二(2017 2 17)
一 誰做了好事?某校有4位同學中的一位做了好事不留名。表揚信來了之後,校長問這4位是誰做的好事。a說 不是我 b說 是c c說 是d d說 他胡說。已知3個人說的是真話,1個人說的是假話。請根據這些資訊,程式設計找出做了好事的人。分析 可設定乙個迴圈,迴圈4次,將4個同學的話表示成邏輯表示式,進行判...
藍橋杯演算法提高 扶老奶奶過街(邏輯推理)
一共有5個紅領巾,編號分別為a b c d e,老奶奶被他們其中乙個扶過了馬路。五個紅領巾各自說話 a 我和e都沒有扶老奶奶 b 老奶奶是被c和e其中乙個扶過大街的 c 老奶奶是被我和d其中乙個扶過大街的 d b和c都沒有扶老奶奶過街 e 我沒有扶老奶奶 已知五個紅領巾中有且只有 個人說的是真話,請...
一道邏輯推理題 猜生日
小明和小強都是張老師的學生,張老師的生日是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日 小明說 如果我不知道的...