问题描述
在一个旅馆中住着6个不同国籍的人,他们分别来自美国、德国、英国、法国、俄罗斯和意大利这几个国家。他们的名字分别叫A、B、C、D、E和F,要说明的是名字的顺序与前面提到的国籍不一定是相互对应的。现在已知:
- A和美国人是医生。
- E和俄罗斯人是教师。
- C和德国人是技师。
- B和F曾经当过兵,而德国人从未参过军。
- 法国人比A年龄大,意大利人比C年龄大。
- B同美国人下周要去西安旅行,而C同法国人下周要去杭州度假。
现要求根据上述已知条件,编程求出A、B、C、D、E和F各是哪国人。
问题分析
根据问题描述中给定的条件可进行如下的分析:
- 由“A和美国人是医生”可知A不是美国人。
- 由“E和俄罗斯人是教师”可知E不是俄罗斯人。
- 由“C和德国人是技师”可知C不是德国人。
- 又因为A的职业是医生,与俄罗斯人和德国人的职业不同,所以A不是俄罗斯人也不是德国人。E的职业是教师,与美国人和德国人的职业不同,所以E不是美国人也不是德国人。C的职业是技师,与美国人和俄罗斯人不同,所以C不是美国人也不是俄罗斯人。
- 由“B和F曾经当过兵,而德国人从未参过军”可知,B和F不是德国人。
- 由“法国人比A年龄大,意大利人比C年龄大”可知A不是法国人,C不是意大利人。
- 由“B同美国人下周要去西安旅行,而C同法国人下周要去杭州度假”可知,B不是美国人,也不是法国人,C不是法国人。
用条件矩阵将上面的分析结果表示出来:
美国人 | 英国人 |
|
|
意大利人 | 俄罗斯人 | |||
A | 0 | 0 | 0 | 0 | ||||
B | 0 | 0 | 0 | |||||
C | 0 |