问题描述:

有A、B、C、D、E这5个人,每个人额头上都帖了一张黑或白的纸。5人对坐,每 个人都可以看到其他人额头上纸的颜色。5人相互观察后:

  • A说:“我看见有3人额头上贴的是白纸,1人额头上贴的是黑纸。”
  • B说:“我看见其他4人额头上贴的都是黑纸。”
  • C说:“我看见1人额头上贴的是白纸,其他3人额头上贴的是黑纸 。”
  • D说:“我看见4人额头上贴的都是白纸。”
  • E什么也没说。

现在己知额头上贴黑纸的人说的都是谎话,额头贴白纸的人说的都是实话。问这5人 谁的额头上贴的是白纸,谁的额头上贴的是黑纸?

问题分析:

呃呃,刚开始推出来了正确答案,被学弟问的不会用代码写了...

分析每个人说的话,对于每个人来说只有两种情况,说谎或者说的是真话,把所有情况暴力枚举,选出来合适的答案即可

求解逻辑推理类问题的关键就是写出正确的逻辑表达式。将问题分析中列出的限定条件用程序语言描述清楚后就可以使用穷举法来获得最终的判断结果。

用 0 表示贴的是黑纸,1 表示贴的是白纸

判断条件:

 (a && (b+c+d+e==3) || !a && (b+c+d+e!=)) &&
(b && (a+c+d+e==0) || !b && (a+c+d+e!=)) &&
(c && (a+b+d+e==1) || !c && (a+b+d+e!=)) &&
(d && (a+b+c+e==4) || !d && (a+b+c+e!=))

代码:

 #include<stdio.h>
int main()
{
int a, b, c, d, e; /*0表示黑色,1表示白色*/
for(a=; a<=; a++) /*穷举五个人额头帖纸颜色的全部可能*/
for(b=; b<=; b++)
for(c=; c<=; c++)
for(d=; d<=; d++)
for(e=; e<=; e++)
if( (a && (b+c+d+e==) || !a && (b+c+d+e!=)) &&
(b && (a+c+d+e==) || !b && (a+c+d+e!=)) &&
(c && (a+b+d+e==) || !c && (a+b+d+e!=)) &&
(d && (a+b+c+e==) || !d && (a+b+c+e!=))
)
{
printf("A额头上的贴纸是%s色的.\n",a?"白":"黑");
printf("B额头上的贴纸是%s色的.\n",b?"白":"黑");
printf("C额头上的贴纸是%s色的.\n",c?"白":"黑");
printf("D额头上的贴纸是%s色的.\n",d?"白":"黑");
printf("E额头上的贴纸是%s色的.\n",e?"白":"黑");
}
return ;
}

C语言黑与白问题的更多相关文章

  1. [转]100个经典C语言程序(益智类问题)

    目录: 1.绘制余弦曲线 2.绘制余弦曲线和直线 3.绘制圆 4.歌星大奖赛 5.求最大数 6.高次方数的尾数 8.借书方案知多少 9.杨辉三角形 10.数制转换 11.打鱼还是晒网 12.抓交通肇事 ...

  2. 【算法】C语言趣味程序设计编程百例精解

    C语言趣味程序设计编程百例精解 C/C++语言经典.实用.趣味程序设计编程百例精解(1)  https://wenku.baidu.com/view/b9f683c08bd63186bcebbc3c. ...

  3. 100个经典C语言程序(益智类)

    100个经典C语言程序(益智类) [1.绘制余弦曲线] 在屏幕上用“*”显示0~360度的余弦函数cos(x)曲线 [问题分析与算法设计] 利用cos(x)的左右对称性,将屏幕的行方向定义为x,列方向 ...

  4. C语言 · 高精度加法

    问题描述 输入两个整数a和b,输出这两个整数的和.a和b都不超过100位. 算法描述 由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储.对于这种问题,一般使用数组来处理. 定义一个数组A ...

  5. Windows server 2012 添加中文语言包(英文转为中文)(离线)

    Windows server 2012 添加中文语言包(英文转为中文)(离线) 相关资料: 公司环境:亚马孙aws虚拟机 英文版Windows2012 中文SQL Server2012安装包,需要安装 ...

  6. iOS开发系列--Swift语言

    概述 Swift是苹果2014年推出的全新的编程语言,它继承了C语言.ObjC的特性,且克服了C语言的兼容性问题.Swift发展过程中不仅保留了ObjC很多语法特性,它也借鉴了多种现代化语言的特点,在 ...

  7. C语言 · Anagrams问题

    问题描述 Anagrams指的是具有如下特性的两个单词:在这两个单词当中,每一个英文字母(不区分大小写)所出现的次数都是相同的.例如,"Unclear"和"Nuclear ...

  8. C语言 · 字符转对比

    问题描述 给定两个仅由大写字母或小写字母组成的字符串(长度介于1到10之间),它们之间的关系是以下4中情况之一: 1:两个字符串长度不等.比如 Beijing 和 Hebei 2:两个字符串不仅长度相 ...

  9. JAVA语言中的修饰符

    JAVA语言中的修饰符 -----------------------------------------------01--------------------------------------- ...

随机推荐

  1. vue使用 router-link 时点击不能跳转问题

    本来一直都是使用<router-link to='/CouplePackage'>产品</router-link>这样的静态方法, 但是突然今天发现这个方法好像有点问题,在某些 ...

  2. AngularJS的目录结构

    templates/ _login.html _feed.html app/ app.js controllers/ LoginController.js FeedController.js dire ...

  3. linux-ntp-10

    Unix/linux类:ntp.aliyun.com,ntp1-7.aliyun.com windows类: time.pool.aliyun.com s1a.time.edu.cn 北京邮电大学 s ...

  4. MySQL的视图和索引

    MySQL的视图 简单来说MySQL的视图就是对SELECT 命令的定义的一个快捷键,我们查询时会用到非常复杂的SELECT语句,而这个语句我们以后还会经常用到,我们可以经这个语句生产视图.视图是一个 ...

  5. Sdoi2017试题泛做

    Day1 [Sdoi2017]数字表格 推式子的莫比乌斯反演题. #include <cstdio> #include <algorithm> #include <cst ...

  6. QGIS源码解析和二次开发

    使用Python 开发一个交通系统? 不如基于GeoServer来开发更能产生效益 QGIS3d:https://blog.csdn.net/shi_weihappy/article/details/ ...

  7. 【转载】What is the difference between authorized_keys and known_hosts file for SSH?

    The known_hosts file lets the client authenticate the server, to check that it isn't connecting to a ...

  8. 线程工具类ThreadUtils

    package yqw.java.util; public class ThreadUtils { /**     * showThreadInfo     *      * @return     ...

  9. nginx 日志文件分隔

    Nginx命令 Nginx命令帮助如下 nginx -h nginx version: nginx/0.8.45 Usage: nginx [-?hvVt] [-s signal] [-c filen ...

  10. centos7 修改ali yum源

    centos7 修改yum源为阿里源,某下网络下速度比较快 首先是到yum源设置文件夹里 安装base reop源 cd /etc/yum.repos.d 接着备份旧的配置文件 sudo mv Cen ...