实验室里有1000个一模一样的瓶子,但是其中的一瓶有毒。可以用实验室的小白鼠来测试哪一瓶是毒药。
如果小白鼠喝掉毒药的话,会在一个星期的时候死去,其他瓶子里的药水没有任何副作用。
请问最少用多少只小白鼠可以在一个星期以内查出哪瓶是毒药
其实10只老鼠能测出1024个药瓶中有毒的那个,分析如下:
1024个药瓶对应标签如下:
9 <------- 0
1:0000000001
2:0000000010
3:0000000011
4:0000000100
5:0000000101
6:0000000110
7:0000000111
............
............
............
1024:1111111111
老鼠标记每个比特位位置:0 ---> 9
可以看到
1号药瓶,被0号老鼠试过
2号药瓶,被1号老鼠试过
3号药瓶,被0号和1号老鼠试过
4号药瓶,被3号老鼠试过
5号药瓶,被3号和0号老鼠试过
............
............
............
1024号药瓶,被0到9号老鼠试过
假设结果是7号8号5号3号老鼠死了那么他们对应的药瓶号是多少呢?
00110101000
这不就找到了吗?