一共有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都沒有扶老...