10只小白鼠找1000瓶水中的1瓶毒药算法

1000瓶水,其中1瓶有毒药,外观无法辨别,喝下去后24小时毒发,用10只小白鼠如何能够最快找出毒药?

其中一种解法是用二进制编号法,具体如下:

1000瓶从1开始标号,然后转换为二进制。例如3 就对应0000 0011 ,每个老鼠对应一个位置,从右往左,遇到1就是对应位置的老鼠需要喝的,0就不喝,例如3 就对应0000 0011 是第一只老鼠和第二只老鼠需要喝下这瓶药水,这与二进制表示一致。5 对应 0000 0101 需要第一只和第三只老鼠喝下。全部操作完毕后等待时间,然后找到死掉的老鼠,比如第1 3 5只,转换成二进制就是 0001 0101,转换为十进制是21,意味着第21瓶有毒。这个方法最多会死掉9只老鼠,但是可以直接一次找出有毒药的瓶子。

其他 2020-11-25 16:31:03 通过 网页 浏览(3221)

共有0条评论!

发表评论