题目描述

小明和小强都是张老师的学生,张老师的生日是M月N日,2人都知道张老师的生日是下列10组中的一天:

     3月4日 3月5日 3月8日6月4日 6月7日9月1日 9月5日12月1日 12月2日 12月8日张老师将M值告诉了小明,将N值告诉了小强,张老师问他们知道他的生日是哪一天吗?小明说:如果我不知道的话,小强肯定不知道小强说:本来我也不知道,但是现在我知道了小明说:哦,那我也知道了据上面信息,推断出张老师的生日是哪一天?

题目解析

这个逻辑题,如何用程序实现?其实这是一个建模过程,我们需要用专业的术语重新描述这个逻辑。

这个问题数据只有2个:月数和天数。逻辑是参杂2个人角度看问题的3句话。我们分析这个问题时,首先要保持第三者的视角,逐个从其他两个视角去分析这个问题。然后就是建立模型,我们看这样的数据有个特征:{Key,Value}键值对。但是可以看出这是个MultiMap,即一个键可以对应多个值。

我们沿着这个思路走.可以发现,站在小明的角度,我们可以将数据建立成一个MultiMap。他眼中的数据使用月数M为键,天数N为值。以后我们称下表为“小明表”。


可以站在小强的角度,我们将数据建立成一个新的MultiMap。他眼中的数据使用天数N为键,月数M为值。以后我们称下标为“小强表”。

我们再回到第三者的角度,可以得出,这两张表对于小明和小强都是可见的。

我们将小明和小强的对话,一条一条转换为约束条件。

1 小明说:如果我不知道的话,小强肯定不知道

小明是看了“小强表”之后得出以上结论。这句话意味着:他所知的M值在“小强表”中不存在Key Value唯一对应关系。即12月2日和6月7日,这两个月份12和6都不是老师的生日月数。因为如果是M是12或6,小明在不知道N的情况下,无法给定如此“拽”的回答。于是逐步排除出一下结果(红色代表排除的选项)


2 小强说:本来我也不知道,但是现在我知道了

小强在看到上图后,得出上面结论。这个说明,小强知道的N在上表中是Key Value唯一对应关系。于是得出

因为小强知道N是多少,所以剩下的选项中,他知道正确答案了。只是我们还不知道。我们期待小明的话。

3 小明说:哦,那我也知道了

对于小明,他和我们一样,可以看到上图。于是他知道N的值只可能是1、4、8。于是修改“小明表”为

由于此时小明已经知道了答案。可以见得M值在上表中是Key Value唯一对应关系。于是我们可以排除3和12。得出

此时有两个答案。我们此时结合筛选后的“小强表”


此时,我们可以说6月4日在“小强表”中已被排除,所以我们选择9月1日。或者我们从这个两个表中找到了唯一的共同选项,从而得知是9月1日。

逻辑推理:张老师的生日相关推荐

  1. 微软的一道经典逻辑推理题:小明和小强都是张老师的学生,张老师的生日是M月N日

    微软的一道经典逻辑推理题:小明和小强都是张老师的学生,张老师的生日是M月N日 分类: 天下杂侃 2008-08-07 23:37 17495人阅读 评论(21) 收藏 举报 题目是这样的: 小明和小强 ...

  2. 微软的一道经典逻辑推理题 小明和小强都是张老师的学生,张老师的生日是M月N日

    微软的一道经典逻辑推理题:小明和小强都是张老师的学生,张老师的生日是M月N日 分类: 天下杂侃 2008-08-07 23:37 17495人阅读 评论(21)收藏 举报 题目是这样的: 小明和小强都 ...

  3. 微软的一道经典逻辑推理题:小明和小强都是张老师的学生,张老师的生日是M月N日...

    题目是这样的: 小明和小强都是张老师的学生,张老师的生日是M月N日,2人都不知道张老师的生日是下列10组中的一天,张老师把M值告诉了小明,把N值告诉了小强,张老师问他们知道他的生日是那一天吗? 3月4 ...

  4. 张老师的生日[逻辑题]

    小明和小强都是张老师的学生,张老师的生日是M月N日, 2人都知道张老师的生日是下列10组中的一天, 张老师把M值告诉了小明,把N值告诉了小强, 张老师问他们知道他的生日是那一天吗? 3月4日 3月5日 ...

  5. 小明和小强都是张老师的学生,张老师的生日是M月N日问题

    小明和小强都是张老师的学生,张老师的生日是M月N日,2人都不知道张老师的生日是下列10组中的一天,张老师把M值告诉了小明,把N值告诉了小强,张老师问他们知道他的生日是那一天吗? 3月4日 3月5日 3 ...

  6. 小明和小强都是张老师的学生,张老师的生日是M月N日,

    小明和小强都是张老师的学生,张老师的生日是M月N日,   2人都知道张老师的生日是下列10组中的一天,张老师把M值告诉了小明,   把N值告诉了小强,张老师问他们知道他的生日是那一天吗?   3月4日 ...

  7. 小明小强c语言20,C语言求解-小明和小强都是张老师的学生,张老师的生日是M月N日.doc...

    小明和小强都是张老师的学生,张老师的生日是M月N日, 2人都知道张老师的生日是下列10组中的一天,张老师把M值告诉了小明, 把N值告诉了小强,张老师问他们知道他的生日是那一天吗? 3月4日 3月5日 ...

  8. 老师生日c语言,C语言求解-小明和小强都是张老师的学生张老师的生日是M月N日.doc...

    C语言求解-小明和小强都是张老师的学生张老师的生日是M月N日 小明和小强都是张老师的学生,张老师的生日是M月N日, 2人都知道张老师的生日是下列10组中的一天,张老师把M值告诉了小明, 把N值告诉了小 ...

  9. 老师生日c语言,C语言求解-小明和小强都是张老师的学生-张老师的生日是M月N日.doc...

    小明和小强都是张老师的学生,张老师的生日是M月N日, 2人都知道张老师的生日是下列10组中的一天,张老师把M值告诉了小明, 把N值告诉了小强,张老师问他们知道他的生日是那一天吗? 3月4日 3月5日 ...

最新文章

  1. ajax中的让渡,jQuery必须掌握的API
  2. HDOJ 1175 连连看 DFS
  3. 【PC工具】更新win10关闭更新工具,接速度最快最好用的文件内容搜索工具:searchmyfiles...
  4. 那些永不消逝的进程 (转)
  5. 【PAT】A1090 Highest Price in Supply Chain
  6. Android http 的使用
  7. linux中的目录结构---Linux学习笔记
  8. 微信小程序父级之间的传值_微信小程序自定义组件封装及父子间组件传值的方法...
  9. 万字长文丨7个经典问题,助你拿下Java面试(建议收藏)
  10. r语言 柱状图加星号_R语言绘制带有显著性字母标记的柱状图
  11. 取 GridView 里 点击当前行的 行数
  12. Java基础-Lambda表达式
  13. android指南针校准 代码_Android 指南针传感器
  14. 推荐系统系列教程之十四:经典模型融合方法----线性模型和树模型的组合拳
  15. a pycharm 标记多个_轻松学透Markdown的终极教程 #3:Markdown标准标记语法(全)
  16. java 通过http post方式传参参数json 方式
  17. JS Location
  18. windows 子系统认识(1)
  19. Javascript-history.go()和history.back()的用法和区别
  20. 你和你的女神之间,差了一个OpenCV口红色号识别器,android开发环境的搭建步骤

热门文章

  1. 点击input时,不显示边框!
  2. roboware安装包
  3. Excel表格vlookup函数
  4. HEG安装及hdf文件转tif文件批处理
  5. 使用jQuery的基于DOM的数据存储和检索
  6. 前端请求异步与同步的区别
  7. CSS布局的三种方式
  8. Html单选按钮自定义样式
  9. STM32——串口概念及应用
  10. 1 CRM需求分析,数据库表,录入数据