面试题--小白鼠实验

实验概述

你有1000个瓶子,其中有1瓶是毒药,其他999瓶是水,且毒药的形态和水一样,从外观上与水没有差异。小白鼠喝了毒药以后会在一周后死亡。现在你有10只小白鼠,和一周的时间,试问如何在一周的时间里找出这瓶毒药。

分析

由于小白鼠只有10只,不可能简单的让每只小白鼠都喝这1000个瓶子里的液体,所以我们需要想办法让这10只小白鼠和1000个瓶子产生联系。

解答

将1000个瓶子编号为1~1000,2的10次方为1024>1000,所以能想到用二进制方法来表示。

瓶子编号 小白鼠排列
1 0000000001
2 0000000010
3 0000000011
··· ···
888 ‭1101111000‬
··· ···
1000 ‭1111101000‬

如上列表所示,将小白鼠依次编号,从左往右依次是第10只、第9只···第1只。接下来给小白鼠按列表喝瓶子里的水,例如第一瓶给第一只喝,第二瓶给第二只喝,第三瓶给第一只以及第二只喝······第888瓶给第10、9、7、6、5、4只喝。一周以后,由于小白鼠喝了毒药会死亡,所以根据最后的小白鼠的存活情况可以确定哪一瓶是毒药。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章