今天的题目原题是这样的:

黑与白:
有A、B、C、D、E五人,每人额头上都帖了一张黑或白的纸。五人对坐,每人都可以看到其它人额头上的纸的颜色。五人相互观察后,
A说:“我看见有三人额头上帖的是白纸,一人额头上帖的是黑纸。”
B说:“我看见其它四人额头上帖的都是黑纸。”
C说:“我看见一人额头上帖的是白纸,其它三人额头上帖的是黑纸。”
D说:“我看见四人额头上帖的都是白纸。”
E什么也没说。
现在已知额头上帖黑纸的人说的都是谎话,额头帖白纸的人说的都是实话。问这五人谁的额头是帖白纸,谁的额头是帖黑纸?

这个问题跟上一篇的“谁说谎”原理是一样的。

“无论谁都有 黑 跟 白 两种可能”

那我们就能确定有 5 个for进行循环嵌套

for(var A = 0 ;A<=1;A++)
{
for(var B = 0 ;B<=1;B++)
{
for(var C = 0 ;C<=1;C++)
{
for(var D = 0 ;D<=1;D++)
{
for(var E = 0 ;E<=1;E++)
{ //逻辑判断的代码在这里
}
}
}
}
}

接下来我们一句一句的分析:

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

那么,A 是白纸的话 有   A==(B+C+D+E==3)==true 如果 A 是黑纸 ,

那 A==(B+C+D+E==3) 依然成立,只是 此时为 A==(B+C+D+E==3)== false 而已 ,所以 我们写 A==(B+C+D+E==3)

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

意思是 B 等于1 的话  B==(A+C+D+E ==0)==true    B 不等于 1 的时候也都变为 false 所以也可以写成  B==(A+C+D+E ==0)  或者  B==!(A||C||D||E)

C说:“我看见一人额头上帖的是白纸,其它三人额头上帖的是黑纸。”

同 A 的道理  有 A==(B+C+D+E==3)

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

这里可以写成 D==(A+B+C+E==4) 或者 D==(A&&B&&C&&E)

最后得到的代码是这样的:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script>
for(var A = 0 ;A<=1;A++)
{
for(var B = 0 ;B<=1;B++)
{
for(var C = 0 ;C<=1;C++)
{
for(var D = 0 ;D<=1;D++)
{
for(var E = 0 ;E<=1;E++)
{
if((B==!(A||C||D||E))&&(D==(A&&B&&C&&E))&&(C==(B+A+D+E==1))&&(A==(B+C+D+E==3)))
alert("a:"+A+"b:"+B+"c:"+C+"d:"+D+"e:"+E);
}
}
}
}
} </script>

结果 是 : C和E 是白纸,其它的是黑纸

ps:现在越想越觉得自己是有多蠢啊,明明很简单却花了挺长的时间来做,都有点想放弃做程序员的念头了

训练趣题:黑与白 有A、B、C、D、E五人,每人额头上都帖了一张黑或白的纸。(此处用javascript实现)的更多相关文章

  1. c语言训练题:关于张三李四王五说谎的问题(此处用javascript实现)

    (第一篇博文) 今天在一个交流群里见他们无聊,然后找到之前收藏的一些c语言题目放出去想让他们做,结果反倒是自己不会做,于是花了很多时间去想. 原题:张三说李四在说谎,李四说王五在说谎,王五说张三和李四 ...

  2. hdu 4649 Professor Tian 多校联合训练的题

    这题起初没读懂题意,悲剧啊,然后看了题解写完就AC了 题意是给一个N,然后给N+1个整数 接着给N个操作符(只有三种操作  即  或 ,与 ,和异或 |   &  ^ )这样依次把操作符插入整 ...

  3. PAT甲级训练刷题代码记录

    刷题链接:https://www.patest.cn/contests/pat-a-practise 1001 #include <iostream> #include <stdio ...

  4. ACM/ICPC Moscow Prefinal 2019 趣题记录

    ### Day1: ### **Problem C:** 设$k_i​$为$[A, B]​$中二进制第$i​$位是1的数的个数. 给出$k_0 \cdots k_{63}​$, 求出$[A, B]​$ ...

  5. 代数&数论趣题集萃

    暑假总不能只学习平面几何.所以这里也收集一些有趣的代数题或数论题,同时记下解法的一些提示.给未来的自己复习参考用. 多图片预警(请注意流量) 目录: Part 0:其他(8) Part 1:不等式(1 ...

  6. TensorFlow 趣题

    checkpoint 文件夹 Tensorflow训练后的模型可以保存checkpoint文件,checkpoint文件是结构与权重分离的四个文件,便于训练. 1)checkpoint 文件 保存断点 ...

  7. 12.26vj训练补题

    D.City Day 题意:就是给定n,x,y,以及这n天的下雨量ai,要求这一天的下雨量是这一天前x天到后y天的下雨量中最小的.输出最早的(下标最小的)d.保证答案一定存在 思路:直接遍历寻找就好了 ...

  8. 关于GC和析构函数的一个趣题

    这个有趣的问题感谢装配脑袋友情提供. 请看如下代码: public class Dummy { public static Dummy Instance; ; ~Dummy() { Instance ...

  9. CodeForces 705B (训练水题)

    题目链接:http://codeforces.com/problemset/problem/705/B 题意略解: 两个人玩游戏,解数字,一个数字可以被分成两个不同或相同的数字 (3可以解成 1 2) ...

随机推荐

  1. jdk jre jvm 关系

    很多朋友可能跟我一样,已经使用JAVA开发很久了,可是对JDK,JRE,JVM这三者的联系与区别,一直都是模模糊糊的. 今天特写此文,来整理下三者的关系. JDK : Java Development ...

  2. Three ways to do WCF instance management

    Three ways to do WCF instance management (Per call, Per session, and Single). IntroductionVery often ...

  3. Timer计时不准确的解决方案 每次都重新调整,修正误差

    http://stackoverflow.com/questions/29722838/system-timers-timer-steadily-increasing-the-interval 需要在 ...

  4. redhat 6.5 使用其它Linux镜像源的yum源

    最近在虚拟机里装了rhel_6.5_x86_64,发现竟然不自带g++,没办法只好 “yum install gcc-c++”,无奈失败,原因是redhat的yum是收费的... 于是打算怒装其它免费 ...

  5. 一起啃PRML - 1.2.3 Bayesian probabilities 贝叶斯概率

    一起啃PRML - 1.2.3 Bayesian probabilities 贝叶斯概率 @copyright 转载请注明出处 http://www.cnblogs.com/chxer/ 这一节简单讲 ...

  6. 论游戏中Buff的实现 [转]

    论游戏中Buff的实现 分类: C/C++ 游戏开发2012-09-13 14:30 574人阅读 评论(6) 收藏 举报 c++游戏开发 源地址:http://blog.codingnow.com/ ...

  7. [C#]网络编程系列专题二:HTTP协议详解

    转自:http://www.cnblogs.com/zhili/archive/2012/08/18/2634475.html 我们在用Asp.net技术开发Web应用程序后,当用户在浏览器输入一个网 ...

  8. (转载)SQL联合查询中的关键语法

    (转载)http://www.cnblogs.com/zhangliyu/archive/2009/03/21/1418215.html 联合查询效率较高.以下例子来说明联合查询的好处 t1表结构(用 ...

  9. Power Strings

    Power Strings TimeLimit: 1 Second   MemoryLimit: 32 Megabyte Totalsubmit: 1791   Accepted: 528 Descr ...

  10. No valid host was found

    set in nova.conf -> scheduler_default_filters=AllHostsFilter Tried without success.