设为首页 加入收藏

TOP

C语言解决新郎和新娘配对问题代码解析
2018-11-20 22:08:48 】 浏览:76
Tags:语言 解决 新郎 新娘 配对 问题 代码 解析

有3对情侣结婚,假设2个新郎为A、B、C,3个新娘为X、Y、Z,有参加婚礼的人搞不清谁和谁结婚,所以去询问了这6位新人中的3位,得到的回答如下:新郎A说他要和新娘X结婚;新娘X说她的未婚夫是新郎C;而新郎C说他要和新娘Z结婚。

听到这样的回答后,提问者知道他们都是在开玩笑,说的都是假话,但他仍搞不清谁和谁结婚,现在请编程求出到底哪位新郎和哪位新娘结婚。


根据问题描述,提问者得到的回答都是假话,因此新郎A的新娘不是X,X的新郎不是C,C的新娘不是Z。

显然,一个新郎只能和一个新娘结婚,他们之间是一对一的关系。


可以采用穷举法来解决。

设3个char型变量x、y和z分别表示与新娘X结婚的新郎、与新娘Y结婚的新郎和与新娘Z结婚的新郎,它们可能取值的集合是{‘A’,’B’,’C’}。

根据问题分析中获得的结论,可以得出判断依据如下:



将上面的判断依据组合起来,找到变量x、y和z所满足的条件如下:


x!='A' && x!='C' && z!='C' && x!=y && x!=z && y!=z


找到上面的条件以后,可以在程序中使用三重循环来穷举和z的所有取值,找出满足上述条件的x值、y值和z值,这样便解决了到底哪位新郎和哪位新娘结婚的问题了。

下面是完整的代码:


#include<stdio.h>
int main()
{
    char x, y, z;
    for(x='A'; x<='C'; x++)
        for(y='A'; y<='C'; y++)
            for(z='A'; z<='C'; z++)
                if(x!='A' && x!='C' && z!='C' && x!=y && x!=z && y!=z)
                {
                    printf("结果为:\n");
                    printf("新娘X与新郎%c结婚。\n", x);
                    printf("新娘Y与新郎%c结婚。\n", y);
                    printf("新娘Z与新郎%c结婚。\n", z);
                }


    return 0;
}


运行结果:


 结果为:
 新娘X与新郎B结婚。
 新娘Y与新郎C结婚。
 新娘Z与新郎A结婚。


C语言解决新郎和新娘配对问题代码解析


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Python 函数式编程:不可变数据结.. 下一篇Valgrind arm-linux 交叉编译

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目