c语言训练题:关于张三李四王五说谎的问题(此处用javascript实现)
2016-03-07 21:18
696 查看
(第一篇博文)
今天在一个交流群里见他们无聊,然后找到之前收藏的一些c语言题目放出去想让他们做,结果反倒是自己不会做,于是花了很多时间去想。
原题:张三说李四在说谎,李四说王五在说谎,王五说张三和李四都在说谎。现在问:这三人中到底谁说的是真话,谁说的是假话?
其实问题本身并不难,只是一开始想多了,陷入死循环。
那这个问题的突破口在哪里呢?
不管谁说谎,每个人都有两个状态 真和假
由此,我们就可以确定,我们有循环嵌套:
这时候,我们只要对zhangsan lisi wangwu 这三个变量进行逻辑判断即可
逻辑怎么判断呢?
根据题目,我们一段一段的分析:
张三说李四在说谎 : 假设zhangsan 就是正确的,那么有 zhangsan == !lisi
李四说王五在说谎 :同理,有 lisi == !wangwu
王五说张三和李四都在说谎 : 有 wangwu ==((!zhangsan)&&(!lisi))
根据数学带入解方程的方法,我们其中的两个两个相互代入,得到两个式子,得到:
zhangsan == wangwu
lisi ==((!zhangsan)&&(!lisi))
那我们的结果只要符合上边两个要求即可:
if((zhangsan == wangwu)&&(lisi ==((!zhangsan)&&(!lisi))))
最后的结果:
ps:虽然说现在做些网站和写些小软件是没问题的,但是由于c# 和 java 都是高级的语言,而且实际使用的时候也很少要这样判断逻辑的,
很久不做这些,脑子真的会生锈的。
今天在一个交流群里见他们无聊,然后找到之前收藏的一些c语言题目放出去想让他们做,结果反倒是自己不会做,于是花了很多时间去想。
原题:张三说李四在说谎,李四说王五在说谎,王五说张三和李四都在说谎。现在问:这三人中到底谁说的是真话,谁说的是假话?
其实问题本身并不难,只是一开始想多了,陷入死循环。
那这个问题的突破口在哪里呢?
不管谁说谎,每个人都有两个状态 真和假
由此,我们就可以确定,我们有循环嵌套:
for(var zhangsan=0;zhangsan<=1;zhangsan++) { for(var lisi=0;lisi<=1;lisi++) { for(var wangwu=0;wangwu<=1;wangwu++) { } } }
这时候,我们只要对zhangsan lisi wangwu 这三个变量进行逻辑判断即可
逻辑怎么判断呢?
根据题目,我们一段一段的分析:
张三说李四在说谎 : 假设zhangsan 就是正确的,那么有 zhangsan == !lisi
李四说王五在说谎 :同理,有 lisi == !wangwu
王五说张三和李四都在说谎 : 有 wangwu ==((!zhangsan)&&(!lisi))
根据数学带入解方程的方法,我们其中的两个两个相互代入,得到两个式子,得到:
zhangsan == wangwu
lisi ==((!zhangsan)&&(!lisi))
那我们的结果只要符合上边两个要求即可:
if((zhangsan == wangwu)&&(lisi ==((!zhangsan)&&(!lisi))))
最后的结果:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script> for(var zhangsan=0;zhangsan<=1;zhangsan++) { for(var lisi=0;lisi<=1;lisi++) { for(var wangwu=0;wangwu<=1;wangwu++) { if((zhangsan==((!zhangsan)&&(!lisi)))&&(zhangsan==wangwu)) alert("张三:"+zhangsan+" 李四:"+lisi+" 王五:"+wangwu); } } } </script>
ps:虽然说现在做些网站和写些小软件是没问题的,但是由于c# 和 java 都是高级的语言,而且实际使用的时候也很少要这样判断逻辑的,
很久不做这些,脑子真的会生锈的。
相关文章推荐
- JavaScript学习总结-技巧、有用函数、简洁方法、编程细节
- javascript
- javascript基础教程(1)
- JS正则表达式是否有字母数字特殊字符+strpos用法
- JS返回顶部的几种方法
- JS常用事件
- JS 监听事件
- pjsip教程-ICE-NAT passthrough
- javascript作用域链,执行环境
- JSON简介及其解析
- JavaScript调用后台的三种方法实例
- JavaScript中的客户端检测技术
- JsonCpp的使用方法
- 解决jsp编写过程中换另一个jsp可以忽视登录过程
- javascript之正则表达式总结
- JSP的九大内置对象
- JavaScript对象创建方法大全
- extjs column列布局
- JavaScript数据类型
- [BZOJ1823][JSOI2010]满汉全席 做题笔记