區分旅客國籍

2022-05-05 06:45:10 字數 1573 閱讀 8142

在乙個旅館中住著六個不同國籍的人,他們分別來自美國、德國、英國、法國、俄羅斯和義大利。他們的名字叫a、b、c、d、e和f。名字的順序與上面的國籍不一定是相互對應的。現在已知:

1)a美國人是醫生。

2)e和俄羅斯人是技師。

3)c和德國人是技師。

4)b和f曾經當過兵,而德國人從未參過軍。

5)法國人比a年齡大;義大利人比c年齡大。

6)b同美國人下週要去西安旅行,而c同法國人下週要去杭州度假。

試問由上述已知條件,a、b、c、d、e和f各是哪國人?

*問題分析與演算法設計

首先進行題目分析,盡可能利用已知條件,確定誰不是哪國人。

由:1) 2) 3)可知:a不是美國人,e不是俄羅斯人,c不是德國人。另外因為a與德國人的職業不同,e與美、德人的職業不同,c與美、俄人的職業不同,故a不是俄羅斯人或德國人,e不是美國人或德國人,c不是美國人或俄羅斯人。

由4)和5)可知b和f不是德國人,a不是法國人,c不是義大利人。

由6)可知b不是美國人,也不是法國人(因b與法國人下週的旅行地點不同);c不是法國人。

將以上結果彙總可以得到下列條件矩陣:

. 美(醫生) 英 法 德(技師) 義大利 俄(教師)

a(醫生) x . x x . x

b x . x x . .

c(技師) x . x x x x

d . . . . . .

e(教師) x . . x . x

f . . . x . .

根據此表使用消元法進行求解,可以方便地得到問題的答案。

將條件矩陣輸入計算機,用程式實現消去演算法是很容易的。

*程式說明與注釋

#include

char *m[7]=; /*國名*/

int main()

if(e==1) /*若該列只有乙個元素為非零,則進行消去操作*/}}

for(i=1;i<7;i++) /*輸出推理結果*/}}

*執行結果

a is coming from italy. (義大利人)

b is coming from eussian. (俄羅斯人)

c is coming from u.k.. (英國人)

d is coming from ger. (德國人)

e is coming from france. (法國人)

f is coming from u.s.. (美國人)

*問題的進一步討論

生成條件矩陣然後使用消去法進行推理判斷是一種常用的方法。對於解決較為複雜的邏輯問題是十分有效的。

*思考題

地理課上老師給出一張沒有說明省份的中國地圖,從中選出五個省從1到5編號,要大家寫出省份的名稱。交卷後五位同學每人只答了二個省份的名稱如下,且每人只答對了乙個省,問正確答案是什麼?

a 答:2號陝西,5號甘肅 b 答:2號湖北,4號山東

c 答:1號山東,5號吉林 d 答:3號湖北,4號吉林

e 答:2號甘肅,3號陝西

百例趣味程式設計題 56 區分旅客國籍

題目 在乙個旅館中住著六個不同國籍的人,他們分別來自美國 德國 英國 法國 俄羅斯和義大利。他們的名字叫a b c d e和f。名字的順序與上面的國籍不一定是相互對應的。現在已知 1 a美國人是醫生。2 e和俄羅斯人是教師。3 c和德國人是技師。4 b和f曾經當過兵,而德國人從未參過軍。5 法國人比...

修改 Apple ID 的國籍

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!4 改變國籍之後,不再接收老國籍的商店傳送的已購買的應用公升級通知。但是會收到裝置上已安裝的公升級通知。5 如果你訂閱了 itunes match,除非訂閱過期,不然無法改變國籍。6 如果你購買了 season pass,除非整個 season 過...

建黨偉業的演員國籍

建黨偉業的演員國籍 陳凱歌 美國 陳紅 美國 劉亦菲 美國 陳冲 美國 鄔君梅 美國 顧長衛 美國 蔣雯麗 美國 寧靜 美國 王姬 美國 郎朗 中國香港 李雲迪 中國香港 胡軍 中國香港 湯唯 中國香港 劉璇 中國香港 童安格 加拿大 蔣大為 加拿大 徐帆 加拿大 陳明 加拿大 張鐵林 英國 許晴 ...