zoukankan      html  css  js  c++  java
  • 面试题:老师生日分析过程,能否建模用程序解答?

    题目:
    小明和小强都是张老师的学生,张老师的生日是M月N日,2人都知道张老师的生日是 下列10组中的一天,张老师把M值告诉了小明,把N值告诉了小强,张老师问他们知道 他的生日是哪一天

    3月4日 3月5日 3月8日
    6月4日 6月7日
    9月1日 9月5日
    12月1日 12月2日 12月8日
    小明说:如果我不知道的话,小强肯定也不知道
    小强说:本来我也不知道,但是现在我知道了
    小明说:哦,那我也知道了

    请根据以上对话推断出张老师的生日是哪一天 请大家推推答案是哪一天,下面是我分析推导的过程。

    分析:
    乍一看不知道从何处入手,条件就是三句对白,遇到这种题目我们应该怎么办呢,首先别慌,然后再一个条件一个条件地分析。
    1. 小明说:如果我不知道的话,小强肯定也不知道
    通过这个条件,我们可以看是不是可以排除掉某个月份,因为小明知道的是月份;如果小明得到的月份是3,小强的选择有三个,分别是3.4,3.5或者3.8,再看这三个日期的日部分,4,5,8,都是有重复的,说明满足小明的条件(如果我不知道的话,小强肯定也不知道);同理再看6月份,有4日和7日两个日期,所有日期中日为7的只有一个,这说明6月份是不满足小明的条件的,可以排除掉了;9月份的两个日期的日部分也是有重复的,说明有可能是9月份;再看12月,12月2日是没有重复的,这说明12月也可以被排除了。

    2. 小强说:本来我不知道,但是现在我知道了
    小强在小明条件的前提下说本来我不知道,但是现在我知道了,通过我们上面的分析小明的条件可以排除掉6月份和12月份,我们要在剩下的3月份和9月份的日期中去推。
    3月4日 3月5日 3月8日
    9月1日 9月5日
    这几个日期中的日有:4,5,8,1,而且日期日部分是5的有两个,所以3月5日和9月5日也可以排除了,因为如果小强知道的数字是5的话他就没有办法知道是3月5日还是9月5日。

    3. 小明说:哦,那我也知道了
    通过条件1,2现在剩下的日期是:
    3月4日 3月8日
    9月1日
    而现在小明说他也知道了,就说明他的条件月份肯定是9了,如果是3的话,他就不能确定是4日还是8日,所以最后答案是9月1日。

    呵呵,你答对了没有。

    后记:
    这种题目能否做数学建模,让电脑去做呢?怎么做?这个随笔意在抛砖引玉,求大家给出一个程序解决的办法,大家各抒己见了。

  • 相关阅读:
    Http方法:Get请求与Post请求的区别
    udev和rules使用规则
    c++中的动态内存分配
    c++中重载运算符
    c++中静态成员函数
    c++中值传递,址传递,引用传递
    c++中实现单例模式singleton class
    [Windows篇] 在windows 10上源码编译gtest 并编写CMakeLists.txt
    [Ubuntu篇] 在ubuntu上源码编译gtest,编写gtest-config.cmake并测试
    使用boost data_time模块来获取毫秒级时间并转换为string字符串
  • 原文地址:https://www.cnblogs.com/yukaizhao/p/topic_model_teacher_birthday.html
Copyright © 2011-2022 走看看