当前位置: 代码迷 >> C语言 >> 月薪3万的一道面试题---看看你的IQ
  详细解决方案

月薪3万的一道面试题---看看你的IQ

热度:140   发布时间:2007-12-18 23:28:00.0
9月1 ,看来我也可以3万月薪了,有趣
----------------解决方案--------------------------------------------------------
也不知道什么时候,这三万元,没戏了.
----------------解决方案--------------------------------------------------------
9月1号
----------------解决方案--------------------------------------------------------
第一句能排除了6月和12月,因为2号和7号是唯一确定的如果是的话就不可能有第一句"我不知道他也不知道了".
第二句能排除了5号,也就只剩下3月4号,3月8号还有9月1号了,如果是3月的话小强他不可能猜也来了,那就只有9月一号了,呵呵
我这3万是不是也能得上啊
----------------解决方案--------------------------------------------------------
月薪3万的一道面试题---看看你的IQ
小明和小强都是张老师的学生,张老师的生日是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日
小明说:如果我不知道的话,小强肯定也不知道
小强说:本来我也不知道,但是现在我知道了
小明说:哦,那我也知道了
请根据以上对话推断出张老师的生日是哪一天,并说明理由
----------------解决方案--------------------------------------------------------
首先按照日或月相同排列为以下两种日期:
3月4日 3月5日 3月8日 6月4日 6月7日 9月1日 9月5日 12月8日 12月1日 12月2日
3月4日 6月4日 3月5日 9月5日 3月8日 12月8日 9月1日 12月1日 12月2日 6月7日

小明说:如果我不知道的话,小强肯定也不知道。可以理解为即使知道日也不可能知道月,因为同日中有很多月,
可以排除 12月2日和6月7日;
剩下:
3月4日 3月5日 3月8日 6月4日 9月1日 9月5日 12月8日 12月1日
3月4日 6月4日 3月5日 9月5日 3月8日 12月8日 9月1日 12月1日
小强说:本来我也不知道,但现在我知道了。也就是说,小明一句话就让小强知道了最后答案。可以理解为两层意思,一是由于小明的话帮助小强排除了12月2日和6月7日,因此小强确定了月份;二是小强知道的日中包含两个月,小明的话帮助他排除了其中一个月。
由一首先想到的是生日在12月和6月,因为前面已经排除2组数据,目前12月和6月剩:
6月4日 12月8日 12月1日
到这里,或许我们认为6月4日就是正确答案了,接着看下一句:
小明说;哦,那我也知道了。可以理解为月中仅仅包含2个日,但小强的话帮助小明排除了其中一个日。但若是6月4日的话,小明开始的话就不敢那么肯定了,因为6月中包含一个日是单独的,所以假设不成立。同时我们排除了6月,同时,12月也被推翻,因为若是12月的话,小强不可能凭借小明一句话排除3个12月中的2个,剩下:
3月4日 3月5日 3月8日 9月1日 9月5日
3月4日 3月5日 9月5日 3月8日 9月1日
由此,我们看出,符合条件的只可能是日中包含两个月且月中包含两个日的数据,我们最先的数据再看一次:

3月4日 3月5日 3月8日 6月4日 6月7日 9月1日 9月5日 12月8日 12月1日 12月2日
3月4日 6月4日 3月5日 9月5日 3月8日 12月8日 9月1日 12月1日 12月2日 6月7日

3月被排除,12月再次被排除,同时前面6月也被排除,剩下的只有9月1日和9月5日了

这里我们可以假设了,假设是1日,那么对应的月为9月和12月,因为小明的话排除了12月,故仅剩下9月,所以为9月1日,也正因为小强说他知道了,得出小明排除了5日,所以这个成立!
假设是5日,对应的则是3月,而凭小明的话并不能一次推走3月,所以小强不会在小明一句话后就知道答案,也支持了9月,所以答案就是9月1日了。

其实通过整个对话,我们得出的就是:
1、甲已知月,月对应很多日,无法判断日,而后发现所知道的月中的日对应很多月,于是肯定如果不知道月,一定不知道日,由此也希望通过这句话寻找更多信息,从而得出具体的日;
2、乙已知日,无法判断月,对甲的话进行分析,(因为每个日最多只对应两个月)排除其中一个月,得到答案;
3、月对应两个日,如果甲开始的一句话能让乙得出答案,则可以排除其中一个日,得到答案。
这样一个过程,反推的话,一次就得到了剩下的日期只有9月1日和9月5日,然后再带入假设,这样会快一些~~

也可见小明聪明多了
----------------解决方案--------------------------------------------------------
9月1日
小明说:如果我不知道的话,小强肯定也不知道。
小明说:哦,那我也知道了
说明小明一开始不知道
那么第一句话可改为:我不知道,小强也不知道。
若N值为2或7,则小强一定知道答案
小明之所以这么确定小强不知道是因为他知道的M植不是6或12
小强说:本来我也不知道,但是现在我知道了。
可以排除N为5的可能

小明说:哦,那我也知道了
说明M不是3
所以答案只有9月1日
----------------解决方案--------------------------------------------------------
3月4号吧
----------------解决方案--------------------------------------------------------
这题还多解吗!不知道错的人怎么想的,居然还那么自信的坚持!
----------------解决方案--------------------------------------------------------
是9月1日,用时4分38秒
----------------解决方案--------------------------------------------------------
  相关解决方案