轉自:http://blog.csdn.net/archimedes_zht/article/details/2784958
題目是這樣的:
小明和小強都是張老師的學生,張老師的生日是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日
小明說:如果我不知道的話,小強肯定也不知道
小強說:本來我也不知道,但是現在我知道了
小明說:哦,那我也知道了
請根據以上對話推斷出張老師的生日是哪一天?
此題剛開始感覺無從下手,不知道該如何是好。但是這類題目,一般都是看你能不能利用其中的規律,或者打破常規的奇思妙想。什麼情況下,一個人能根據他知道一個數字推出別人的生日呢?在這一題中,小明和小強知道的信息只有:生日可能的10個值,老師告訴他們的一個數字(月或者日)還有他們兩個之間的對話。
首先是小明先說話,他說他不知道。他知道的可能性也確實很小,因爲無論老師高訴他是哪個月,都有2種或者3種可能性讓他選擇,除非他還知道其他的信息,不然他肯定不知道。不過他不僅說他不知道,而且還說“如果他不知道的話,小強肯定也不知道”。那麼小強什麼情況下肯定不知道呢?那就是和小明一樣,老師告訴他的那個日對應至少2個月份,除非他還知道其他信息,那他肯定不能確定最終生日的。但是仔細觀察後,我們可以發現:如果老師告訴小強,是7或者2的話,那麼他就可以知道老師的生日了。因爲7和2對應的月是唯一的。所以從第一句話可以知道:N不會爲7和2,M也不會爲6和12(後半句要想清楚了)。
那現在的可能值就是:
3月4日 3月5日 3月8日
9月1日 9月5日
現在小強說他知道了。那N就不可能爲5了,因爲M就有3和9兩種可能。
那現在的可能值就是:
3月4日 3月8日
9月1日
現在小明也說他也知道了。那M就肯定爲9了。因爲M爲3的爲話,N就有4和8兩種可能了。
所以老師的生日是:9月1日。
解題總結:根據當前條件找出當前最能肯定(一定正確)的結論,一步一步的推下去,不斷排除,最終確定。
感慨:微軟的面試題果然就是不一樣啊。想通了之後,覺得此題太妙了。呵呵。