核心算法就是二分查找法。算法
# 不一样的整数,二进制表现形式也不一样,此处是将[1,1000],利用二进制按位分组。 1. 将全部的水肯定编号,并按照二进制的方式排序下去。 2. 根据二进制排列,按不一样位`0-1`分为两组,共执行 10 次,且任何一次不相关。 3. 分别让 10 只老鼠试出,已经分好的 10 组的毒性。 4. 若第一组有毒,则说明有毒的水的编号的二进制的 第一位就是 1,以此计算其余位 `0/1`。 5. 根据二进制编码,便可求出有毒的水的编号。
# 此处便是经典的二分法。 1. 将 1000 瓶水分为两组混合,用一只老鼠试出哪一组有毒。(老鼠喝了第一组没死,第二组就是有毒的)。 2. 最多重复以上操做 10 次,便可找出有毒的水是哪一瓶。 3. 因为操做的特殊性,即分组的两组之中,必然有一组有毒,(0 ~ 10) 只老鼠便可。