训练趣题:黑与白 有A、B、C、D、E五人,每人额头上都帖了一张黑或白的纸。(此处用javascript实现)
今天的题目原题是这样的:
“
黑与白:
有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实现)的更多相关文章
- c语言训练题:关于张三李四王五说谎的问题(此处用javascript实现)
(第一篇博文) 今天在一个交流群里见他们无聊,然后找到之前收藏的一些c语言题目放出去想让他们做,结果反倒是自己不会做,于是花了很多时间去想. 原题:张三说李四在说谎,李四说王五在说谎,王五说张三和李四 ...
- hdu 4649 Professor Tian 多校联合训练的题
这题起初没读懂题意,悲剧啊,然后看了题解写完就AC了 题意是给一个N,然后给N+1个整数 接着给N个操作符(只有三种操作 即 或 ,与 ,和异或 | & ^ )这样依次把操作符插入整 ...
- PAT甲级训练刷题代码记录
刷题链接:https://www.patest.cn/contests/pat-a-practise 1001 #include <iostream> #include <stdio ...
- ACM/ICPC Moscow Prefinal 2019 趣题记录
### Day1: ### **Problem C:** 设$k_i$为$[A, B]$中二进制第$i$位是1的数的个数. 给出$k_0 \cdots k_{63}$, 求出$[A, B]$ ...
- 代数&数论趣题集萃
暑假总不能只学习平面几何.所以这里也收集一些有趣的代数题或数论题,同时记下解法的一些提示.给未来的自己复习参考用. 多图片预警(请注意流量) 目录: Part 0:其他(8) Part 1:不等式(1 ...
- TensorFlow 趣题
checkpoint 文件夹 Tensorflow训练后的模型可以保存checkpoint文件,checkpoint文件是结构与权重分离的四个文件,便于训练. 1)checkpoint 文件 保存断点 ...
- 12.26vj训练补题
D.City Day 题意:就是给定n,x,y,以及这n天的下雨量ai,要求这一天的下雨量是这一天前x天到后y天的下雨量中最小的.输出最早的(下标最小的)d.保证答案一定存在 思路:直接遍历寻找就好了 ...
- 关于GC和析构函数的一个趣题
这个有趣的问题感谢装配脑袋友情提供. 请看如下代码: public class Dummy { public static Dummy Instance; ; ~Dummy() { Instance ...
- CodeForces 705B (训练水题)
题目链接:http://codeforces.com/problemset/problem/705/B 题意略解: 两个人玩游戏,解数字,一个数字可以被分成两个不同或相同的数字 (3可以解成 1 2) ...
随机推荐
- jdk jre jvm 关系
很多朋友可能跟我一样,已经使用JAVA开发很久了,可是对JDK,JRE,JVM这三者的联系与区别,一直都是模模糊糊的. 今天特写此文,来整理下三者的关系. JDK : Java Development ...
- Three ways to do WCF instance management
Three ways to do WCF instance management (Per call, Per session, and Single). IntroductionVery often ...
- Timer计时不准确的解决方案 每次都重新调整,修正误差
http://stackoverflow.com/questions/29722838/system-timers-timer-steadily-increasing-the-interval 需要在 ...
- redhat 6.5 使用其它Linux镜像源的yum源
最近在虚拟机里装了rhel_6.5_x86_64,发现竟然不自带g++,没办法只好 “yum install gcc-c++”,无奈失败,原因是redhat的yum是收费的... 于是打算怒装其它免费 ...
- 一起啃PRML - 1.2.3 Bayesian probabilities 贝叶斯概率
一起啃PRML - 1.2.3 Bayesian probabilities 贝叶斯概率 @copyright 转载请注明出处 http://www.cnblogs.com/chxer/ 这一节简单讲 ...
- 论游戏中Buff的实现 [转]
论游戏中Buff的实现 分类: C/C++ 游戏开发2012-09-13 14:30 574人阅读 评论(6) 收藏 举报 c++游戏开发 源地址:http://blog.codingnow.com/ ...
- [C#]网络编程系列专题二:HTTP协议详解
转自:http://www.cnblogs.com/zhili/archive/2012/08/18/2634475.html 我们在用Asp.net技术开发Web应用程序后,当用户在浏览器输入一个网 ...
- (转载)SQL联合查询中的关键语法
(转载)http://www.cnblogs.com/zhangliyu/archive/2009/03/21/1418215.html 联合查询效率较高.以下例子来说明联合查询的好处 t1表结构(用 ...
- Power Strings
Power Strings TimeLimit: 1 Second MemoryLimit: 32 Megabyte Totalsubmit: 1791 Accepted: 528 Descr ...
- No valid host was found
set in nova.conf -> scheduler_default_filters=AllHostsFilter Tried without success.