婚礼上的谎言
/*三对情侣参加婚礼,3个新郎为A,B,C,3个新娘为X,Y,Z,有人想知道究竟谁和谁结婚,于是就问新人中的三位,得到如下提示:A说他将和X结婚,X说她的未婚夫是C,C说他将和Z结婚。事后知道他们在开玩笑,说的全是假话,那么究竟谁与谁结婚呢?
技术要点:
解决本实例的算法思想如下:
用“a=1”表示新郎a和x结婚,同理如果新郎a不和新娘x结婚则写成“a!=1”,根据题意得到如下表达式:
a!=1 a不与x结婚
c!=1 c不与x结婚
c!=3 c不与z结婚
我们在分析题的时候还要发现题中隐含的条件即:3个新郎不能互为配偶,则有:a!b且b!=c且a!=c。穷举所有可能的情况,带入上述表达式进行
推理计算,如果假设的情况使上述表达式的结果为真,则假设的情况就是正确的结果 */
#include<stdio.h>
int main(void)
{
int a,b,c;
for(a=1;a<=3;a++)
for(b=1;b<=3;b++)
for(c=1;c<=3;c++)
if(a!=1&&c!=1&&c!=3&&a!=b&&b!=c&&a!=c)
{
printf("%c will marry to a\n",'x'+a-1);//不明白是什么意思,而且为什么这里的'x'不需要初始化
printf("%c will marry to b\n",'x'+b-1);
printf("%c will marry to c\n",'x'+c-1);
}
}