有1000瓶水,其中有一瓶有毒,小白鼠只要尝一点带毒的水24小时后就会死亡,至少要多少只小白鼠才能在24小时时鉴别出哪瓶水有毒?
这是一道很经典的面试题目,先说解题方法吧,2^n >= 1000,其中n就是小白鼠的数量。如果知道答案了,也许很多人就恍然大雾,当然有些专业的人士用下面的归纳法证明了下:
1)当n=1时,即有2瓶水,任取一瓶水喂老鼠,若24小时后老鼠死,则此瓶水有毒;若24小时后老鼠没死,则此瓶水无毒,另一瓶水有毒。课件只需一个老鼠即可判断出哪瓶有毒。即当n=1时命题成立。
2)假设当n=k(k>1)时,命题为真。即须k只老鼠即可判断出哪瓶水有毒。
则当n=k+1时,即有2^(n+1)瓶水。
将水分成2组,命名为P1和P2,每组2^n瓶水.
则这两组瓶中有一组全没毒,另一组中有仅一瓶有毒。
a) 取1只老鼠、任取一组瓶子,假设为P1,将P1中的全部瓶子水都让老鼠尝一下。则24小时后可以根据此老鼠的生死情况判断毒药在哪一组。
b) 取k只老鼠,根据假设可知当n=k时,可判断哪瓶水有毒。用这k只老鼠同时去检测P1和P2,则24小时后可挑出P1中的某一瓶和P2中的某一瓶,这两瓶可能有毒。
根据a、b中的结果综合分析