一、问题描述

有A、B、C、D、E五个人,每人额头上都贴了一张黑色或白色的纸条。五人对坐,每人都可以看到其他人额头上的纸的颜色,但都不知道自己额头上的纸的颜色。五人互相观察后,

A说:“我看见有三个人额头上贴的是白纸,一个人额头上贴的是黑纸。”

B说:“我看见其他四个人额头上贴的都是黑纸。”

C说:“我看见有一个人额头上贴的是白纸,其他三个人额头上贴的是黑纸。”

D说:“我看见四个人额头上贴的都是白纸。”

E说:“我不发表观点。”

现在一直额头上贴黑纸的人说的都是谎话,额头上贴白纸的人说的都是实话,问这五个人谁的额头上贴的是白纸,谁的额头上贴的是黑纸。

二、算法思想

需要穷举出每个人额头上所贴纸的颜色,假设0表示黑色,1表示白色。然后按照题意列出A、B、C、D四个人所说的话对应的逻辑表达式,并判断所列条件是否成立,成立则输出所贴的纸张颜色即可。依据题意列出额的逻辑表达式为:

  A:  (a && b+c+d+e==3) || (!a && b+c+d+e!=3)

  B:  (b && a+c+d+e==0) || (!b && b+c+d+e!=0)

  C:  (c && a+b+d+e==1) || (!c && a+b+d+e!=1)

  D:  (d && a+b+c+e==4) || (!d && a+b+c+e!=4)

具体的操作利用循环解决问题,设置多重循环,依次穷举出五人贴白纸和黑纸的所有可能,再用条件语句进行判断,其条件表达式为(注意各个括号覆盖范围):

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

三、程序代码

 1 #include <stdio.h>
 2
 3 int main(){
 4     int a, b, c, d, e;
 5     for(a=0; a<=1; a++){
 6         for(b=0; b<=1; b++){
 7             for(c=0; c<=1; c++){
 8                 for(d=0; d<=1; d++){
 9                     for(e=0; e<=1; e++){
10                         if( ((a && b+c+d+e==3) || (!a && b+c+d+e!=3)) && ((b && a+c+d+e==0) || (!b && b+c+d+e!=0)) && ((c && a+b+d+e==1) || (!c && a+b+d+e!=1)) && ((d && a+b+c+e==4) || (!d && a+b+c+e!=4)) ){
11                             printf("0-黑纸\t1-白纸\n\n");
12                             printf(" a是%d\n b是%d\n c是%d\n d是%d\n e是%d\n", a, b, c, d, e);
13                         }
14                     }
15                 }
16             }
17         }
18     }
19     return 0;
20 }

四、运行结果

转载于:https://www.cnblogs.com/IronLavender/p/6814301.html

逻辑表达式——黑纸白纸相关推荐

  1. 27.白纸黑点与黑纸白点

    这是一个发生在非洲的真实故事. 那是在加纳的一所寄宿制中学里,一位都是走进了教室.他先拿出一张画有一个黑点的白纸,问他的学生:"孩子们,你们看到了什么?"学生们盯住黑点,齐声喊道: ...

  2. 有趣的游戏-猜黑白纸

    有A,B,C,D,E五个人,每个人的额头上都贴了一张黑色或者白色的纸条,五人对坐,每个人可以看到其他人头上的纸的颜色,但都不知道自己额头上纸的颜色,五人相互观察后: A说:"我看见有三个人的 ...

  3. c语言编译时字符黑色,C语言黑与白问题

    问题描述 有A.B.C.D.E这5个人,每个人额头上都帖了一张黑或白的纸.5人对坐,每 个人都可以看到其他人额头上纸的颜色.5人相互观察后: A说:"我看见有3人额头上贴的是白纸,1人额头上 ...

  4. 一文读懂傅立叶变换处理图像的原理

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 图 (a): (从左到右) (1) 原始图片 (2) 使用高斯低通 ...

  5. 六大技巧提升员工信息安全意识

    国家网络安全宣传周即将于本月19日开启,随着互联网和信息系统的普及,越来越多的企业认识到员工信息安全意识的重要性,开始开展员工的信息安全意识宣传教育活动,并将其作为每年信息安全工作中的一项必要工作,常 ...

  6. 发光强度/光通量/光照度/亮度/坎德拉/流明/勒克斯/尼特之间的关系和换算

    一. 发光强度(Intensity,简写为I) 1. 定义 光源在给定方向的单位立体角中发射的光通量定义为光源在该方向的发光强度.它是点光源的固有属性,表征发光体在空间发射的汇聚能力的.可以说,发光强 ...

  7. 打不死我的,终将使我强大!DevOps黑客马拉松参赛心得

    (IDCF DevOps黑客马拉松到底是个啥活动?) 长得丑活得久.长得帅也惹人爱! 大家好,我是刘威.隆正信息的业务架构师-花名逸云. 非常荣幸可以参加在北京举办的第一届DevOps黑客马拉松比赛. ...

  8. PS2019进阶笔记(二)

    云端网校笔记(PS2015) 一.图层混合模式 图层面板上的左上角,默认正常 混合下面图层,下面正片(如模特). 最常用是:不透明度 溶解:需调节透明度 变暗组: 亮区域去除或加暗,暗的区域保留或加暗 ...

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

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

最新文章

  1. 基于mysql主从同步的proxy读写分离
  2. 【极客blog图文讲解】ruby以及Jekyll的环境配置(针对mac linux)
  3. nginx 支持h265 的 rtmp和hls,http-flv
  4. mob sdk vue 短信验证_短信接口那些事儿,你知道多少?
  5. 网易互客敏捷交付实践
  6. XML电子口岸自动报关项目 真实百万级项目下载
  7. 典型环节的matlab仿真分析,典型环节的MATLAB仿真.doc
  8. mysql+表复制+效率_MySQL数据库复制表的几种方式讲解
  9. 本科、硕士、博士之间的差距!
  10. mysql讀取sql_MySQL数据库之python json及mysql读取json文件存sql等问题
  11. 2021年中国一次性个人防护装备市场趋势报告、技术动态创新及2027年市场预测
  12. java源码-AtomicInteger
  13. 令人蛋疼的错误提示 0xcdcdcdcd ,0xdddddddd ,0xfeeefeee ,0xcccccccc ,0xabababab
  14. 端口转发、映射、代理
  15. PortableApps使用入门
  16. 利用浏览器检查获取网页视频
  17. 学计算机的发说说,计算机说说
  18. 新增免费 代理(Proxy)验证助手 自用 支持http/socks
  19. 梦雨百度网盘批量改名与文件批量复制
  20. 7485设计8位比较器

热门文章

  1. 转先验概率、最大似然估计、贝叶斯估计、最大后验概率
  2. 安卓实现序列化之Parcelable接口
  3. 课程2 谈论音乐行业的趋势
  4. 莫队算法 BOJ 2038 [2009国家集训队]小Z的袜子(hose)
  5. BZOJ 1045 [HAOI2008]糖果传递 ★(环形等分:中位数)
  6. 校验输入框的内容不能重复_答应我,用了这个jupyter插件,别再重复造轮子了
  7. Eigen(8)实例最小二乘法
  8. ubuntu chmod更改权限
  9. libevent简介和使用
  10. garch模型python步骤_GARCH模型的建模步骤?