淘宝面试题:小白鼠与毒药

http://www.itmian4.com/forum.php?mod=viewthread&tid=4412&extra=page%3D1看到的,红色字体是本人补充的。

题目大意

 

有很多瓶无色液体,它们中只有一瓶毒液,其余的全是蒸馏水。在外观上看,所有瓶子完全相同。小白鼠如果喝掉了有毒的液体,5 分钟之后死亡。

现在手上有 5 个小白鼠,问 5 分钟之内,能准确的鉴别出多少瓶液体。有如下 4 个选项:

A. 5     B. 6     C. 31    D. 32

 

做法分析

 

最容易想到的办法:5 只老鼠每人喝一瓶,于是能鉴别 5 瓶

但是答案后面给的 31 和 32 是什么意思?再想想

哦,是不是可以把瓶子中的液体混合着吃,然后根据 5 只老鼠的连锁反应鉴别液体?好像挺科学的样子

5 只老鼠的连锁反应,总共有 2^5 种可能的情况,情况太多,不太好分析,我们从一只老鼠分析着走

 

1 只老鼠:明显只能鉴别 1 瓶

 

2 只老鼠

两只老鼠的反应有:(活,活),(活,死),(死,活),(死,死)

再考虑到:只有一个瓶子的液体有毒,怎么安排他们喝药才能准确鉴别毒药呢(蒸馏水直接无视掉)

(活,死)和(死,活)的状态,肯定是一只老鼠喝了一瓶且仅仅是一瓶另一只老鼠没喝过的

(死,死)这种状态,肯定是他们共同喝了一瓶且仅仅一瓶

我们用 1 表示喝,0 表示不喝,那么,不难凑出如下的喝药策略:

  瓶子 1 瓶子 2 瓶子 3
老鼠 1 1 1 0
老鼠 2 1 0 1

那么,现在得出结论:2 只老鼠能鉴别 3 瓶

 

3 只老鼠

三只老鼠的反应有:(活,活,活),(活,活,死),(活,死,活),(活,死,死),(死,活,活),(死,活,死),(死,死,活),(死,死,死)

注:给3只老鼠分别编号为1、2、3号。

共有1种这样的情况:  3只都死,表示他们必须喝过同一瓶;

共有3种这样的情况:  2死1活,表示两死的必定喝过同一瓶;

共有3种这样的情况:  1死2活,表示一死的肯定自己单独喝过一瓶别人没喝过的;

共有1种这样的情况:  3只都活,表示不了什么,只能说明他们喝过的都没问题,但是毒液却没检测出来。

综上所述:他们都喝过同一瓶子,+1;(即下面表格中的瓶子7)

     其中2只会喝同一瓶,+3;(即下面表格中的瓶子4、5、6)

     每一老鼠都独享一瓶,+3;(即下面的瓶子1、2、3)

和两只老鼠一样的分析:每一只老鼠都喝过一瓶且仅仅一瓶其他老鼠没有喝过的液体,任意两只老鼠都喝过一瓶且仅仅一瓶第三只老鼠没有喝过的液体,三只老鼠共同喝过一瓶液体,那么不难得出如下的喝药策略:

  瓶子 1 瓶子 2 瓶子 3 瓶子 4 瓶子 5 瓶子 6 瓶子 7
老鼠 1 1 0 0 1 1 0 1
老鼠 2 0 1 0 1 0 1 1
老鼠 3 0 0 1 0 1 1 1

于是得出结论:3 只老鼠能鉴别 7 瓶

 

到了这里,4,5 只老鼠的情形应该不用分析了吧,答案应该是:n 只老鼠能够鉴别 2^n - 1 瓶。(这是根据规律总结出来的,“情况:全活”证明不了什么,所以需要减去一瓶)

 

这道题目的答案应该是 2^5 - 1,选择 C  (里面还能牵扯到数学的东西,不扎实,不多想了~)

posted @ 2015-01-15 20:13  xcw0754  阅读(440)  评论(0编辑  收藏  举报