【C语言编程练习】新娘与新郎
1. 题目要求
新郎A,B,C与新娘 X,Y,Z。有人不知道她们谁和谁结婚了,询问了6位新人中的三位,A说他将和X结婚,X说她的未婚夫是C,C说她会和Z结婚,一听就知道是全是假话,请编程找出谁和谁结婚
2. 题目分析
what!这是什么情况!这是什么混乱的关系。才看完问题之后发现没有什么线索呢?只有一句全是假话,所以上述的关系就可以作为排除,还是用穷举法,然后排除上面的情况。
所以,目前我的思路是,没有看参考答案的思路就是先列出所有可能情况,然后再对条件排除。
3. 代码尝试
【难点】如何表示解空间?有没有什么方法呢?
for(i=0;i<3;i++){
for(j=0;j<3;j++){
for(k=0;k<3;k++){
if(i!=k&&j!=k&&i!=j){ //判断不是同一个新郎
}
}
}
}
【难点】如何表示排除关系呢?
if(wife[i] == 'X') return 0;其实这句话的意思就是:i对应的一定不是‘X’,一定要好好体会呢!
【代码1】
#include <stdio.h>
int isMatch(int i,int j,int k , char wife[]){
if(wife[i] == 'X') return 0;
if(wife[j] == 'Y') return 0;
if(wife[k] == 'Z') return 0;
return 1;
}
int main(){
char hansband[3]={'A','B','C'};
char wife[3]={'X','Y','Z'};
int i,j,k;
for(i=0;i<3;i++){
for(j=0;j<3;j++){
for(k=0;k<3;k++){
if(i!=k&&j!=k&&i!=j){ //判断不是同一个新郎
if(isMatch(i,j,k,wife)){
printf("husband wife\n");
printf("A ---- %c\n",wife[i]);
printf("B ---- %c\n",wife[j]);
printf("C ---- %c\n",wife[k]);
}
}
}
}
}
return 0;
}
可以看出结果是有问题的呢!
错误原因:
一点点小小的成就就冲昏了头脑呢,约束条件也太相当让了吧~
#include <stdio.h>
int Match(int i,int j,int k , char wife[]){
if(wife[i] == 'X') return 0; X与A不会结婚
if(wife[k] == 'X') return 0; X与C不会结婚
if(wife[k] == 'Z') return 0; Z与C不会结婚
return 1;
}
int main(){
char hansband[3]={'A','B','C'};
char wife[3]={'X','Y','Z'};
int i,j,k;
for(i=0;i<3;i++){
for(j=0;j<3;j++){
for(k=0;k<3;k++){
if(i!=k&&j!=k&&i!=j){ //判断不是同一个新郎
if(Match(i,j,k,wife)){
printf("husband wife\n");
printf("A ---- %c\n",wife[i]);
printf("B ---- %c\n",wife[j]);
printf("C ---- %c\n",wife[k]);
}
}
}
}
}
return 0;
}
4. 总结
这个问题看似复杂,只要开始想一想,其实也是有思路可以找到的,其实这道题是前两天因为其他事情耽搁了,本来应该早一点就写好的。也是从解空间中找出符合问题条件的解,但需要注意的是对约束条件不能像当然呢,一定要想清楚!!
转载于:https://www.cnblogs.com/mumutoday/p/10539281.html
【C语言编程练习】新娘与新郎相关推荐
- C/C++语言编程的隐患!
C/C++语言编程的隐患! 本文将带您了解一些良好的和内存相关的编码实践,以将内存错误保持在控制范围内.内存错误是 C 和 C++ 编程的祸根:它们很普遍,认识其严重性已有二十多年,但始终没有彻底解决 ...
- c语言程序设计分段定时器,单片机C语言编程定时器的几种表达方式
原标题:单片机C语言编程定时器的几种表达方式 吴鉴鹰单片机开发板地址 店铺:[吴鉴鹰的小铺] 地址:[https://item.taobao.com/item.htm?_u=ukgdp5a7629&a ...
- perl语言编程 第四版_2020年,5 种 将死的编程语言!
来源 | 码农网译者 | 小峰 曾几何时,几乎每个人都在使用Perl语言编程.但是那些经常使用的人慢慢地发现,关于这个Perl语言似乎总是有点不对劲.至少我知道有这么个叫做"piecemea ...
- 共阳极数码管动态扫描c语言,《C语言编程实训》实训指导书三
1 C 语言编程实训语言编程实训 实训指导书三实训指导书三 适应专业 应用电子技术适应专业 应用电子技术 广州康大职业技术学院自动化系广州康大职业技术学院自动化系 二二 0 一一 0 年十一月年十一月 ...
- 语言趣味编程100例无水印_趣味c语言编程100例(三)
经典c程序100例==51--60 [程序51] 题目:学习使用按位与 & . 1.程序分析:0&0=0; 0&1=0; 1&0=0; 1&1=1 2.程序源代 ...
- c语言中手机系统,一种手机课堂C语言编程系统的制作方法
技术特征: 1.一种手机课堂C语言编程系统,其特征在于:该系统由手机端C语言编译运行单元.嵌入式主机端传输单元.台式机端显示单元和投影仪端显示单元组成:所述手机端C语言编译运行单元.嵌入式主机端传输单 ...
- linux c语言工具,Linux下C语言编程环境的工具.doc
Linux下C语言编程环境的工具 Linux下C语言编程环境的工具 Linux下C语言编程环境的工具 要想在Linux下进行C语言编程,首先得搭建好一个编程环境.这里分别说明一下几个非常有用的软件包. ...
- 单片机如何使用?51单片机C语言编程实例有哪些?
大家好,我是无际单片机编程的徐明,今天和大家一起探讨一下"单片机如何使用?" 单片机如何使用,我们要知道单片机在哪里使用? 单片机是很多电子产品的核心器件,它具有一定的逻辑判断和事 ...
- 11 12 13c语言编程,C语言编程
C语言编程 1.sscanf() sscanf()与scanf()类似,都是用于输入的,只是后者以键盘(stdin)为输入源,前者以固定字符串为输入源. 头文件:#include 格式:int ssc ...
- 编写100多行的c语言程序,C语言编程100多例.doc
C语言编程100多例 As we all know, the education system in China is test-oriented education. However, it cou ...
最新文章
- 任意多相机系统的SLAM重设计
- C语言函数题-利用指针,实现字符串比较函数
- springboot---基本模块详解
- wxpython textctrl_wxPython TextCtrl类
- flinksql写入hudi 踩坑实录
- 老外看中国:本土移动应用差异在哪?
- vue main.js中引入js_手把手教你深入Vue3.0(Vue-cli4)项目打包性能优化实践
- HTML5中最重要的技术点有哪些
- ASP.NET的ASHX一般处理程序中Session为null且不能赋值
- JavaScript与页面交互
- 第2章 信息系统集成及服务管理
- windows性能监视器常用计数器
- 慕课《算法分析与设计》山东财经大学李恒武,第二章算法分析 测验题问题梳理答案
- 11月全国程序员平均工资出炉,我给同行丢脸了。。。
- CAS132172-61-3阳离子脂质体DOTAP科研用
- Python画图实战之画沪深300的收益率
- 通过Bottledwater同步PostgreSQL中的数据变化到Kafka消息队列
- python提示jsondecodeerror是什么意思_Python爬虫解析json遇到一类JSONDecodeError的解决方案...
- Perfmon - Windows 自带系统监测工具
- OPC是什么意思?OPC Server 和OPC Client又有什么区别呢?