首先按照日或月相同排列为以下两种日期:
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日,然后再带入假设,这样会快一些~~
也可见小明聪明多了