题目
3对情侣参加婚礼,3个新郎abc,三个新娘为xyz,有人想知道究竟谁与谁结婚,于是就问新人中的三位,得到以下结果,a说他将和x结婚,x说他的未婚夫是c,c说他讲和z结婚,这人事后知道他们在开玩笑,说的全是假话,那么究竟谁与谁结婚了呢,
用C语言实现问题的解决
’这里借鉴的书上的代码,具体用到的穷举法。
#include<stdio.h>
int main()
{
int a,b,c; /*代表新郎,为了方便循环表达用123来代替新娘的xyz*/
for(a=1;a<=3;a++) /*这里用到穷举法,就是把所有的组合走一遍*/
for(b=1;b<=3;b++) /*会有三个人娶到同一个人的情况所以下面要加if来判断*/
for(c=1;c<=3;c++) /*这里abc对应的情况是111,112,113然后跳出c循环穷举出b娶到2新娘的情况121,122,123以此类推*/
if(a!=1&&c!=1&&c!=3&&a!=b&&a!=c&&b!=c) /*注意这里的条件不要忘记三个人不能娶同一个老婆*/
{ printf("%c将要嫁给A\n",'X'+a-1);
printf("%c将要嫁给B\n",'X'+b-1);
printf("%c将要嫁给C\n",'X'+c-1);
}
return 0;
}
运行结果: