C语言-婚礼上的谎言
来源:互联网 发布:厦门淘宝运营培训 编辑:程序博客网 时间:2024/05/01 13:33
问题:三对情侣参加婚礼,3个新郎a、b、c,3个新娘x、y、z,有人想知道究竟谁和谁结婚,于是就问新人中的三位,得到如下提示:a说他将和x结婚;x说他的未婚夫是c;c说他将和z结婚。这人事后知道他们都在开玩笑,说的全是假话,那么究竟谁与谁结婚呢?
思路:用“a=1”表示新郎a和新娘x结婚,同理,如果新郎a不与新娘x结婚则写成“a!=1”,即x,y,z使用1,2,3表示,根据题意可以得到如下的表达式:
a!=1 a不与x结婚
c!=1 c不与x结婚
c!=3 c不与z结婚
其实根据上面3个表达式,我们就可以进行推理结果了:
c不与x,z结婚,那么肯定是和y结婚,所以c=2
a不与x结婚,那么肯定是与z结婚,所以a=3
最后剩下的肯定是b与x结婚,即b=1
那么我们如何使用程序表达呢?是想,对于新郎而言,每一个人都可能与三位新娘中的任意一位结婚,所以我们需要根据事先已知条件遍历所有的情况,得到最终结果,但是还需要注意一个隐含的条件,那就是,3个新郎不能够互为配偶,即a!=b且b!=c且a!=c。
具体代码实现:
int main(int argc, const char * argv[]) { int a,b,c; for (a = 1; a <= 3; a++) { //穷举a的所有可能性 for (b = 1; b <= 3; b++) { //穷举b的所有可能性 for (c = 1; c <= 3; c++) { //穷举c的所有可能性 if (a != 1 && c != 1 && c != 3 && a !=b && b != c && a != c) { //如果表达式为真输出结果,否则继续下次循环 printf("%c 将嫁给 a\n",'x' + a - 1); printf("%c 将嫁给 b\n",'x' + b - 1); printf("%c 将嫁给 c\n",'x' + c - 1); } } } } /* 输出结果: z 将嫁给 a x 将嫁给 b y 将嫁给 c printf("%c 将嫁给 a\n",'x' + a - 1); 函数解释:%c表示输出一个字符,'x' + a - 1表示字符x加上某个数值,其结果会得到另外一个字符,这里涉及到ASCII值,每一个字母都对应一个值。所以在计算之后会得到对应的x,y,z.可以看下表: */ return 0;}
0 0
- C语言-婚礼上的谎言
- 婚礼上的谎言(C语言)
- C语言 婚礼上的谎言
- 婚礼上的谎言
- 婚礼上的谎言 015
- 婚礼上的谎言(C++实现)
- 第四天、婚礼上的谎言
- 婚礼上的谎言【穷举法】
- 婚礼上的誓言
- 梦中的婚礼 c++--beep()
- 教材:婚礼上新郎的经典发言稿
- 婚礼上新郎的经典发言
- 婚礼上,新郎的一段精彩表白
- 婚礼上可用的 八荣八耻(大全)
- 让你当婚礼上的尸体
- 8.17 婚礼上的小杉 1533
- 西方传统婚礼上牧师的证言(完整版)
- 婚礼上新娘和新郎的服装搭配及配饰
- docker常用指令简介(干货)
- php设计模式之装饰器
- 将Doc或者Docx文档处理成html的代码逻辑;统计word中的字数,段数,句数,读取word中文档内容的代码逻辑
- 2月英语总结
- rabbitmq学习之路(一)安装以及简单使用
- C语言-婚礼上的谎言
- perl学习笔记——数据类型
- Kubernetes学习笔记(二):网络原理
- hdu 2036 改革春风吹满地【多边形面积】
- ubuntu 查看uuid
- 腾讯面试题-0到9999这1万个数中有多少个数字7
- MongoDB与Java的整合
- 浅谈微软认证Outlook Web Access钓鱼(Outlook Web Access Phishing)
- 弱网测试方法整理