藍橋杯 扶老奶奶過街

2021-07-25 07:36:17 字數 741 閱讀 5329

一共有5個紅領巾,編號分別為a、b、c、d、e,老奶奶被他們其中乙個扶過了馬路。

五個紅領巾各自說話:

a :我和e都沒有扶老奶奶

b :老奶奶是被c和e其中乙個扶過大街的

c :老奶奶是被我和d其中乙個扶過大街的

d :b和c都沒有扶老奶奶過街

e :我沒有扶老奶奶

已知五個紅領巾中有且只有2個人說的是真話,請問是誰扶這老奶奶過了街?

若有多個答案,在一行中輸出,編號之間用空格隔開。

例如a b c d e(這顯然不是正確答案)

分析:這道題可以直接邏輯推理來做,因為只有abcde五個人,兩個人說了真話,就只有c[5,2]=10種情況,說真話的分別為ab,ac,ad,ae,bc,bd,be,cd,ce,de。通過簡單推理得當ae說真話時,b扶了老奶奶;bd時,是e;de時,是a。因此,**直接輸出abe。

當然,為了保險,程式設計得出準確答案。我們將之間的邏輯關係設為程式語句,將abcde視為乙個陣列a[5],1表示扶了老奶奶,0表示沒扶。先假設他們都沒有扶老奶奶,將a賦為0,然後依次假設其中一位扶了老奶奶,賦為1.具體見**

for (char c = 'a'; c <= 'e'; c++)

if (c == 'c' || c == 'e')

if (c == 'c' || c == 'd')

if (c != 'b' && c != 'c')

if (c != 'e')

if (sum == 2)

藍橋杯 扶老奶奶過街

演算法提高 扶老奶奶過街 時間限制 1.0s 記憶體限制 256.0mb 一共有5個紅領巾,編號分別為a b c d e,老奶奶被他們其中乙個扶過了馬路。五個紅領巾各自說話 a 我和e都沒有扶老奶奶 b 老奶奶是被c和e其中乙個扶過大街的 c 老奶奶是被我和d其中乙個扶過大街的 d b和c都沒有扶老...

藍橋杯 扶老奶奶過街

題意 一共有5個紅領巾,編號分別為a b c d e,老奶奶被他們其中乙個扶過了馬路。五個紅領巾各自說話 a 我和e都沒有扶老奶奶 b 老奶奶是被c和e其中乙個扶過大街的 c 老奶奶是被我和d其中乙個扶過大街的 d b和c都沒有扶老奶奶過街 e 我沒有扶老奶奶 已知五個紅領巾中有且只有 個人說的是真...

藍橋杯 演算法提高 扶老奶奶過街

演算法提高 扶老奶奶過街 時間限制 1.0s 記憶體限制 256.0mb 一共有5個紅領巾,編號分別為a b c d e,老奶奶被他們其中乙個扶過了馬路。五個紅領巾各自說話 a 我和e都沒有扶老奶奶 b 老奶奶是被c和e其中乙個扶過大街的 c 老奶奶是被我和d其中乙個扶過大街的 d b和c都沒有扶老...