(-1)寫在前面 都快去北京了,硬生生的安排一場java考試,對於那些特別細節的東西我忘了吧也不覺得有什麼不好,以前都記得,也都見過,只不過平時不常用連接斷了,但是你死記硬背是沒用的,一段時間後還是會忘,唯一的途徑就是多做東西,理論聯繫實際,相反這道題我感覺很有意思,也在網上看到了很多解釋,覺得都有 ...
(-1)寫在前面
都快去北京了,硬生生的安排一場java考試,對於那些特別細節的東西我忘了吧也不覺得有什麼不好,以前都記得,也都見過,只不過平時不常用連接斷了,但是你死記硬背是沒用的,一段時間後還是會忘,唯一的途徑就是多做東西,理論聯繫實際,相反這道題我感覺很有意思,也在網上看到了很多解釋,覺得都有所不足,下麵是我給出的答案。
(0)詳細解釋
設一個老師的生日為M月N日.把M告訴學生甲(即學生甲知道老師出生的月份),把N告訴學生乙(即學生乙知道老師出生的日).現有如下日期是公開的:3月4日,3月8日,3月10日,6月4日,6月7日,9月1日,9月10日,12月1日,12月2日,12月8日
其中有一個是老師的生日.
現有學生甲與學生乙的對話:
學生甲:如果我不知道的話,你一定不知道.
學生乙:本來我不知道的,現在我知道了.
學生甲:那我也知道了.
現在問:老師的生日是哪一天?
甲的第一句話
首先我們看數據有哪些特性,數據是由月份和日期組成的,甲是知道月份的,數據中的月份有3,6,9,12,甲不能通過自己知道的月份信息判斷出老師的生日,甲知道乙無法通過日期推測出正確的月份。
甲知道的是3 月 日期有4,8,10
甲知道的是6月 日期有4,7
甲知道的是9 月 日期有1,10
甲知道的是12月 日期有2,8
我們發現7日、2日是唯一的,也就說明,如果甲知道的是六月,那麼乙知道的是7日,就推測出生日,甲就不會說你一定不知道,所以甲知道的不是6月,同理,甲知道的也不是12月。
乙的第一句話
根據甲的第一句話,剩餘數據如下:
甲知道的是3 月 日期有4,8,10
甲知道的是9 月 日期有1,10
乙的前半句話有歧義,第一種情況,乙認為甲能夠通過月份推出生日,那麼乙的日期就是2或7,這與甲第一句話得出的結論不符。那麼就是第二種情況,乙此時通過甲的話推斷出上述結論,根據自己的日期判斷出了甲的月份,顯然10是不對的,如果是10,甲的月份就不唯一。那麼數據如下:
甲知道的是3 月 日期有4,8
甲知道的是9 月 日期有1
這樣看來似乎3月4日,3月8日,9月1日都是可以的,因為乙知道1,4,8中的任意一個對應的月份都是唯一的
甲的第二句話
這句話把答案推向了9月1日,因為對於甲來講,如果他知道的是3月,對於老師的生日就3月4日和3月8日兩種選擇,而如果他知道的是9月,就只有9月1日這一種答案。