题目描述
给定99瓶水和1瓶毒药,假定老鼠喝完毒药要一周后才发作,问在一周后要确定哪瓶是毒药,至少需要多少只老鼠
题目解析
- 方法一
首先暴力破解来一波,99只老鼠,每只老鼠喝一瓶就知道结果了,这肯定是不符合要求的 - 方法二
- 暴力破解不行,说明一只老鼠不可能只喝一瓶,每只老鼠要喝多瓶;按照之前的基础,采用二进制来解决
- 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