转自:http://blog.csdn.net/yuanruiau/article/details/6845211
1. 1000瓶药,有一瓶污染了并有毒,选用最少的小白鼠一次测试出哪一瓶是有毒的。(若有毒,小白鼠7天后死掉,7天做测试时间)
对每一瓶药进行编号,并根据编号的二进制数值,位1的让相应的小白鼠喝,需要10位二进制数来表示1000,所以需要10只小白鼠
7天后,看哪几位对应的小白鼠死掉,则可以得到有毒的瓶的二进制编号,进而指导瓶的编号
2. 扩展,若允许14天作为测试时间,最少需要多少只小白鼠,仍是只有一瓶有毒
启发:若有四瓶毒药,用一只小白鼠,对瓶进行1-4编号,第一天喝第1瓶,第二天喝第2瓶,第三天喝第3瓶,第四天喝第4瓶,看小白鼠在哪天死掉
如果是第7天死掉,说明是1号瓶有毒;若第8天死掉,说明是2号瓶有毒。。。
给的期限是14天,第1~8天喂小白鼠,第7~14天可以做为观看结果的时间,将瓶分成8组,每组125只,每组还是用1中的方法,编号1~125进行二进制编码,并根据二进制1位喂小白鼠。第一天喝第一组的1~125瓶,若有毒在第7天死掉,并根据死掉哪几位小白鼠知道该组中瓶的编号;第二天喝第二组的1~125号瓶,若有毒在第8天死掉。。。
每组125瓶,需要7位来表示,所以需要7只小白鼠