1. 程式人生 > >1000瓶試劑,其中一瓶有毒,最少需要多少隻小白鼠能找出有毒的試劑

1000瓶試劑,其中一瓶有毒,最少需要多少隻小白鼠能找出有毒的試劑

思路:
這是一道典型的二分法查詢的演算法題,一般情況下,我們使用的都是序列的二分法,如果這道題沒有時間限制,我們就可以使用序列的二分法找到毒藥,步驟如下:
(1)首先,給試劑編號,1~1000
(2)給第一隻小白鼠喂1~500號混合的試劑,等待24小時,
(3)如果小白鼠死亡,則給第二隻喂1~250號混合的試劑,否則,喂501~750號試劑
(4)依次進行二分,可以看出,這樣最多需要10只小白鼠就能找到毒藥。
但是,這道題有時間限制,所以我們要同時給一定的小白鼠喂藥,然後從小白鼠的死亡情況找出毒藥。步驟如下:
(1)第一隻小白鼠:1~500
(2)第二隻小白鼠:1~250 + 501~750
(3)第三隻小白鼠:1~125 + 251~500 + 501~625 + 751+875
……….
依次下去,由於2^9 < 1000 < 2^10,所以需要10只小白鼠才能找到毒藥。