老鼠毒药问题
描述
第一种: 1000瓶药水,只有一瓶有毒,小老鼠喝下去之后会在1小时死亡。问给你一小时和10只老鼠怎样检测出那瓶是毒药?
第二种: 1000瓶药水,只有一瓶有毒,小老鼠喝下去之后会在1小时死亡。问给你一小时时间最少需要多少只老鼠才能检测出那瓶是毒药?
方案
上面两种的解题思路是一样的,本文以第一种为例。
提示:老鼠喝了药水后只有两种情况,要么活要么死,10只老鼠有1024种情况,根据1024种情况可判断出哪瓶药水有毒。
-
给药水按照二进制的方式进行标号。
如下
药水1:0000 0000 00
药水2:0000 0000 01
药水3:0000 0000 10
…
药水1000:1111 1001 11 -
将10个老鼠排序,当做二进制中的1。
1号老鼠:第1位的1
2号老鼠:第2位的1
3号老鼠:第3位的1
…
10号老鼠:第10位的1 -
根据药水二进制的1所在的位置,将药水喂给相应的老鼠。
药水1:0000 0000 00,由于对应的二进制都是0,所以这瓶不用喂给老鼠
药水2:0000 0000 01,第1位是1,喂给1号老鼠
…
药水27:0000 0110 10,第2、4、5位是1,喂给2、4、5号老鼠
…
药水1000:1111 1001 11,第1、2、3、6、7、8、9、10位是1,喂给1、2、3、6、7、8、9、10号老鼠 -
观察有哪些老鼠会死掉,将死掉的老鼠换成二进制的1,然后根据1所在的位置找到对应的药水。
若没有老鼠死掉,则药水1是毒药;
若2、4、5号老鼠死掉,则二进制标号0000 0110 10的药水27是毒药;
…
第二种情况大家自己分析即可,我就不在这累述了。