问题描述

有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!='A'  表示新郎A的新娘不是X;

x!='C'  表示与新娘X结婚的新郎不是C;

z!='C’  表示C的新娘不是Z;

x!='y'  表示与新娘X结婚的新郎不会与新娘Y结婚;

x!='z'  表示与新娘X结婚的新郎不会与新娘Z结婚;

y!='z'  表示与新娘Y结婚的新郎不会与新娘Z结婚。

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

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

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

下面是完整的代码:

#include

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语言,C语言解决新郎和新娘配对问题代码解析相关推荐

  1. 算法设计与分析复习笔记(上)

    简介:本文是博主在复习算法设计与分析的笔记,参考了北大算法设计与分析以及王晓东编著的<计算机算法设计与分析>第四版相关内容,如有错误,欢迎指正. 文章目录 设计技术 分治 动态规划 设计技 ...

  2. 算法设计与分析:动态规划(3)-序列联配问题(以算代存)

    文章目录 前言 高级动态规划 应用分治思想减少空间 计算得分 从后缀匹配到前缀匹配 伪代码 分治点计算改进 总结 本文参考UCAS卜东波老师算法设计与分析课程撰写 前言 本文内容承接上一次算法设计与分 ...

  3. 哈工大2020秋算法设计与分析大作业(一)

    哈工大2020秋算法设计与分析大作业(一) 前言 正文 1 论文题目 标题 作者 刊物 2 论文阅读报告 2.1 摘要 2.2 问题定义 2.3 算法或证明过程 2.4 实验结论 哈工大2020秋算法 ...

  4. SDU 2021.1 算法设计与分析考试 回忆版

    SDU 2021.1 计科 算法设计与分析考试 计算题 DFSDFSDFS:画出深度优先树:给出每个点的开始时间和结束时间:给出每条边的分类 有向图上的多源最短路径,要求计算distancematri ...

  5. 算法设计与分析(电子科技大学)(上)算法基础和贪心算法

    算法分析与设计 引论 (1)理解算法和程序的差别 (2)理解判断问题和优化问题这两类计算问题 1.理解指数增长的规模 2.理解渐进表达式 掌握渐进符号Ο.Θ.Ω的含义,能判断一个函数属于哪个渐近增长阶 ...

  6. 算法设计与分析基础-笔记-上

    算法设计与分析基础 绪论 什么是算法 一系列解决问题的明确指令,对于符合一定规范的输入,能够在有限的时间内获得要求的输出. 例子:最大公约数:俩个不全为0 的非负整数 m m m和 n n n的最大公 ...

  7. 算法设计与分析——树的搜索策略和字符串处理算法

    树的基本搜索策略 爬山法(有点类似于广度优先搜索,只是加上了边的权重) ( 1 ) 构 造 由 根 组 成 的 单 元 素 栈 S ; ( 2 ) I f T o p ( S ) 是 目 标 节 点 ...

  8. 算法设计与分析课程的时间空间复杂度

    算法设计与分析课程的时间空间复杂度: 总结 算法 时间复杂度 空间复杂度 说明 Hanoi $ O(2^n) $ $ O(n) $ 递归使用 会场安排问题 \(O(nlogn)\) \(O(n)\) ...

  9. 哈工大威海算法设计与分析_计算机算法设计与分析第一章 算法概述

    晓强Deep Learning的读书分享会,先从这里开始,从大学开始.大家好,我是晓强,计算机科学与技术专业研究生在读.我会不定时的更新我的文章,内容可能包括深度学习入门知识,具体包括CV,NLP方向 ...

最新文章

  1. oracle外部表ora29913,从外部表中选择sqlplus错误:ORA-29913:执行ODCIEXTTABLEOPEN标注时出错...
  2. Java 18 都要来了,你不会还在用Java 8吧?
  3. C++ Primer 5th笔记(chap 17 标准库特殊设施)匹配与 Regex 迭代器类型
  4. 【原创】如何写一个框架:步骤(下)
  5. 如何成为一名优秀的前端工程师 (copy) - 段华建
  6. virtualbox--在win7设置ubuntu虚拟机网络
  7. JSON之Asp.net MVC C#对象转JSON,DataTable转JSON,ListT转JSON,JSON转ListT,JSON转C#对象...
  8. 【基于zxing的编解码实战】zxing项目源码解读(2.3.0版本,Android部分)
  9. 【Python机器学习】梯度下降法(一) | 优矿(uqer.io)
  10. 安装东西要计算机权限,安装需要管理员权限,详细教您怎么设置安装软件需要管理员权限...
  11. USB转I2C芯片操作EEPROM--CH347应用
  12. UE4Possess切换控制Pawn
  13. BLDC电机中的死区时间究竟是什么?
  14. 推荐系统经典算法之协同过滤
  15. 云生态瞭望 | 腾讯云生态暖伙伴心
  16. Pycharm配置编译器
  17. [BZOJ1911] [Apio2010]特别行动队
  18. Cloudify Cloud foundry
  19. Anaconda使用matplotlib画图中文乱码解决办法
  20. Verilog——篮球24S计时器

热门文章

  1. php 运行外部程序_PHP实现执行外部程序的方法详解
  2. 模拟电路基础秦世才_模拟电子技术基础碎片化-晶体管及放大电路基础
  3. 2021年回顾与展望
  4. 重新精读《Java 编程思想》系列之final关键字
  5. java 线程假醒_Java并发基础05. 传统线程同步通信技术
  6. 提高显卡性能软件_华硕RTX30系显卡亮相
  7. Linux strace 跟踪进程信息
  8. nginx 错误502 upstream sent too big header while reading response header from upst
  9. python遍历任意层次字典_Python递归中 return 代码陷阱
  10. python读取大文件太慢_python读取大文件越来越慢的原因与解决