java统计投票张三李四_[Java教程]c语言训练题:关于张三李四王五说谎的问题(此处用javascript实现)...

[Java教程]c语言训练题:关于张三李四王五说谎的问题(此处用javascript实现)

0 2016-03-07 22:00:16

(第一篇博文)

今天在一个交流群里见他们无聊,然后找到之前收藏的一些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))))

最后的结果:

bc91bb04e6e9c61e24c974e4440db8f2.gif

ps:虽然说现在做些网站和写些小软件是没问题的,但是由于c#  和 java 都是高级的语言,而且实际使用的时候也很少要这样判断逻辑的,

很久不做这些,脑子真的会生锈的。

本文网址:http://www.shaoqun.com/a/198969.html

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:admin@shaoqun.com。

JavaScript

0

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值