zoukankan      html  css  js  c++  java
  • 张老师的生日究竟是哪天(温故经典推理题[转载])

    小明和小强都是张老师的学生,张老师的生日是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值告诉了小强,然后问他们:“知道我的生日是那一天吗?”
    小明说:“如果我不知道的话,小强肯定也不知道”。
    小强说:“本来我也不知道,但是现在我知道了”。
    小明说:“哦,那我也知道了”。
    请根据以上对话推断出张老师的生日是哪一天。
    据说做出来的人月薪3万(网上流传说是月薪3万的一个岗位的面试题)

    解法:
    小明说:“如果我不知道的话,小强肯定也不知道”其实,小明根本就不知道。所以这句话有问题,即有歧义。

    如果小明说的第一句话的后半句是真的话:
    小明知道,n值不可能是只出现一次(2和7),一定出现过两次(1,4,5,8)。也就是说m值不可能是6和12。如果是6和12的话,那么小明就不能确定小强肯定不知道。
    小强从小明的话也推断出,既然你那么确定我不知道,那么n值不可能是只出现一次,一定出现过两次。说明m值不可能是6和12。
    那么m值不是3就是9。如果m值是3,那么小强就有可能知道,也有可能不知道。因为如果是3-5,那么小强就不知道;如果是3-4,3-8,那么小强就知道。也就是说,如果m是3,小强就不能说他知道了。所以m是9(正因为小强知道n是1)。如果说n值是5,那么小强就不知道,但是小强说他知道。那么n肯定不是5。所以n是1(正因为小明知道m是9) 。也就验证了两个人都知道张老师的生日就是9月1号。

    如果小明说的第一句话的后半句是假的话:
    即小明想知道老师的生日,但又不知道小强是否知道,如果小强不知道的话,也不想让他知道,而说了一句试探性的假话的话。
    小明要达成他的目的,他就假装告诉小强,他知道n不可能只出现一次。不管小强说,本来知道还是不知道,只要小强说真话,他就可以知道老师的生日。可以推断出,只有m=6才满足小明的目的。
    小强以为小明说的是真的,所以由上一种情况可以知道,小强误以为是9-1。所以他说,本来他也不知道,但是现在他知道了。由小强的不知道到知道,小明推断出,n值一定是出现过两次。所以n值为4。所以张老师的生日正确是6-4,而不是9-1。

  • 相关阅读:
    鼠标经过,显示悬浮DIV
    js 循环向上滚动
    Android 全局搜索条写成自定义控件-曹永思
    CYS-Sqlite数据导入工具
    启动Android App时,动态将Sqlite数据库文件导入到手机中类方法
    asp.net 多线程
    1.母版简单创建和使用
    class表与student表之间的关系
    02Del.ashx(删除班级)
    05StuList.aspx(学生列表)
  • 原文地址:https://www.cnblogs.com/QQParadise/p/1289780.html
Copyright © 2011-2022 走看看