日期:2014-05-20  浏览次数:21023 次

高分求助面试题
有1000个瓶子都装满液体,其中一瓶装有有毒液体,该液体可以在1天时间使一株植物死亡,现在有任意株植物可以供你使用,问在一天内你最少使用多少植物可以证明那个有毒的瓶子

------解决方案--------------------
暂时想不到... 1K个可以不?
------解决方案--------------------
运气不好的话,1个
------解决方案--------------------
有1000个瓶子都装满液体,其中一瓶装有有毒液体,该液体可以在1天时间使一株植物死亡,现在有任意株植物可以供你使用,问在一天内你最少使用多少植物可以证明那个有毒的瓶子


你看哦。该液体可以在1天时间使一株植物死亡,也就是24个小时。那么你要问他这个植物死亡是在一天时间后在能发现,还是这一株植物一感染有有毒液体就知道。这个是关键。

如果是24个小时后的话,那么就要1000株植物(因为24个小时后的话。那么你必须一对一,等到24小时一看就明白)


如果是一感染有有毒液体就知道的话,那么1株植物就可以了。(你可以用这1株植物放到1000个瓶子里去试,试到感染的就知道了。)
------解决方案--------------------
总共需要10株植物.

想象一下二进制. 1到1000的话就是00 0000 0001 - 11 1110 1000

假设我们摆10盆植物,摆成二进制的排列,分别编上编号,假设编号从右到左是1-10

也就是这样子:

植物10,植物9 ... 植物2,植物1

现在我们拿第一瓶液体.1在二进制是00 0000 0001,于是我们给最右边,就是编号一的植物滴上液体.
第二瓶,2在二进制是00 0000 0010,于是我们在从右往左第二瓶,也就是编号2的植物上滴上液体.
第三瓶,3在二进制是00 0000 0011,于是我们在编号1和编号2两盆植物都滴上液体.
当滴完1000瓶以后.

等一天...

死去的植物,表示毒液的二进制序号.

比如,如果1号植物和2号植物死了.就说明00 0000 0011编号液体有毒,就是3号液体有毒.

如果第4号植物死了,就说明00 0000 1000液体有毒,也就是8号液体有毒.

死去的植物代表液体的二进制编号,明白了吗?



------解决方案--------------------
好方法