算法智力题-老鼠测验哪瓶是毒药

题目描述

给定99瓶水和1瓶毒药,假定老鼠喝完毒药要一周后才发作,问在一周后要确定哪瓶是毒药,至少需要多少只老鼠

题目解析
  1. 方法一
    首先暴力破解来一波,99只老鼠,每只老鼠喝一瓶就知道结果了,这肯定是不符合要求的
  2. 方法二
  • 暴力破解不行,说明一只老鼠不可能只喝一瓶,每只老鼠要喝多瓶;按照之前的基础,采用二进制来解决
  • 7位二进制能表示的范围0-127,够100瓶了,7位二进制用来干嘛,当然是用来对瓶子编号了,0000001,0000010,...,1100100(1-100), 至于为什么从1开始编号,这和后面如何喝药有关
  • 选几只老鼠,答案显而易见了:7只。怎么喝,7只对7位,这个需要多思考下,每只老鼠喝某一位为1的所有水,比如第一只老鼠喝第一位为1的所有水,第二只老鼠喝第二位为1的所有水,依次类推,一周后等待结果。
  • 最后,一周后怎么判断哪瓶是毒药,需要根据老鼠的存活情况来看。看7只老鼠哪些死了,死了的说明一定是喝了毒药的,也就是毒药瓶子的编号在相应死了的老鼠对应的位上一定是1,不然死了的老鼠是喝不上毒药的
    比如1,3,7只老鼠死了,则毒药瓶的编号为:2^0+ 2^2 + 2^6=69

你可能感兴趣的:(算法智力题-老鼠测验哪瓶是毒药)