三对情侣参加婚礼,三个新郞为A、B、C,三个新娘为X、Y、Z。有人不知道谁和谁结婚,于是询问了六位新人中的三位,但听到的回答是这样的:A说他将和X结婚;X说她的未婚夫是C;C说他将和Z结婚。这人听后知道他们在开玩笑,全是假话。请编程找出谁将和谁结婚。
; V7 B3 Z4 G* f" V5 z *问题分析与算法设计
6 k/ k+ Z% E; P& o! J 将A、B、C三人用1,2,3表示,将X和A结婚表示为“X=1”,将Y不与A结婚表示为“Y!=1”。按照题目中的叙述可以写出表达式:
1 P- |5 x' e- V: _0 ~- F5 a x!=1 A不与X结婚
e- v! o1 T7 S2 U7 C) |" T x!=3 X的未婚夫不是C
1 Y" P w* w; X) y! Y$ p; b1 ~ z!=3 C不与Z结婚6 q2 Y5 `# ?6 ?% `. ], P
题意还隐含着X、Y、Z三个新娘不能结为配偶,则有:) k$ P K2 R% L# V
x!=y且x!=z且y!=z; f% I) M) T( i( \
穷举以上所有可能的情况,代入上述表达式中进行推理运算,若假设的情况使上述表达式的结果均为真,则假设情况就是正确的结果。! G: R: B) W& w* S) C6 l) n7 [
*程序说明与注释6 e( ~* O' ~( {4 F4 E3 j1 k4 P
#include! G: s( J, _9 {4 y
int main()
- G. M2 H5 i% H9 S { n3 l9 d) y. D2 ]4 R, V) |
int x,y,z;
D8 P8 Z, W0 d% A5 E* J0 ?- K& ^# w for(x=1;x |