对于出现的题目:有1000瓶水,仅有一瓶有毒,老鼠喝后1天后死亡,如何用10只老鼠在最短时间确定毒水位置。分析:对于出现的数字1,10,1000;最快确定结果,则一只一只地试就不必谈了,这里注意对数据敏感,2的10次方即是1024大于1000;所以可以确定用二进制的原理。首先,对10只老鼠编号排一行固定好,等待喝水。 r9 r8 r7 r6 r5 r4 r3 r2 r1 r0 对水的编号,转二进制 比如第5瓶 为 00000 00101 对应有1的位的老鼠就喝一点。 此时就是 r2和r0喝一点。 如此对水测试处理(所以第一只最倒霉)。 最后,一天后,根据各箱子里老鼠的死亡情况来判断毒水的位置。 如果 r2 r0都死了,其他活着对应二进制00000 00101 的第5瓶果真就是有毒的。 【仅仅学术讨论,不假定其他意外】附带一代码: #include "stdio.h"#include "stdlib.h"#define n 100void main(){ int i,j,k=n-1,kk; int r[n]={0};int b[n]={0};for(i=0;i