第一篇:java抽象-老師的生日-邏輯思維-有趣的面試題-遁地龍卷風(fēng)
(-1)寫在前面
都快去北京了,硬生生的安排一場(chǎng)java考試,對(duì)于那些特別細(xì)節(jié)的東西我忘了吧也不覺得有什么不好,以前都記得,也都見過,只不過平時(shí)不常用連接斷了,但是你死記硬背是沒用的,一段時(shí)間后還是會(huì)忘,唯一的途徑就是多做東西,理論聯(lián)系實(shí)際,相反這道題我感覺很有意思,也在網(wǎng)上看到了很多解釋,覺得都有所不足,下面是我給出的答案。
(0)詳細(xì)解釋
設(shè)一個(gè)老師的生日為M月N日.把M告訴學(xué)生甲(即學(xué)生甲知道老師出生的月份),把N告訴學(xué)生乙(即學(xué)生乙知道老師出生的日).現(xiàn)有如下日期是公開的:3月4日,3月8日,3月10日,6月4日,6月7日,9月1日,9月10日,12月1日,12月2日,12月8日 其中有一個(gè)是老師的生日.現(xiàn)有學(xué)生甲與學(xué)生乙的對(duì)話: 學(xué)生甲:如果我不知道的話,你一定不知道.學(xué)生乙:本來我不知道的,現(xiàn)在我知道了.學(xué)生甲:那我也知道了.現(xiàn)在問:老師的生日是哪一天? 甲的第一句話
首先我們看數(shù)據(jù)有哪些特性,數(shù)據(jù)是由月份和日期組成的,甲是知道月份的,數(shù)據(jù)中的月份有3,6,9,12,甲不能通過自己知道的月份信息判斷出老師的生日,甲知道乙無法通過日期推測(cè)出正確的月份。甲知道的是3 月 日期有4,8,10 甲知道的是6月 日期有4,7 甲知道的是9 月 日期有1,10 甲知道的是12月 日期有2,8
我們發(fā)現(xiàn)7日、2日是唯一的,也就說明,如果甲知道的是六月,那么乙知道的是7日,就推測(cè)出生日,甲就不會(huì)說你一定不知道,所以甲知道的不是6月,同理,甲知道的也不是12月。
乙的第一句話
根據(jù)甲的第一句話,剩余數(shù)據(jù)如下: 甲知道的是3 月 日期有4,8,10 甲知道的是9 月 日期有1,10 乙的前半句話有歧義,第一種情況,乙認(rèn)為甲能夠通過月份推出生日,那么乙的日期就是2或7,這與甲第一句話得出的結(jié)論不符。那么就是第二種情況,乙此時(shí)通過甲的話推斷出上述結(jié)論,根據(jù)自己的日期判斷出了甲的月份,顯然10是不對(duì)的,如果是10,甲的月份就不唯一。那么數(shù)據(jù)如下: 甲知道的是3 月 日期有4,8 甲知道的是9 月 日期有1 這樣看來似乎3月4日,3月8日,9月1日都是可以的,因?yàn)橐抑?,4,8中的任意一個(gè)對(duì)應(yīng)的月份都是唯一的
甲的第二句話
這句話把答案推向了9月1日,因?yàn)閷?duì)于甲來講,如果他知道的是3月,對(duì)于老師的生日就3月4日和3月8日兩種選擇,而如果他知道的是9月,就只有9月1日這一種答案。