上次在在javaeye 上看到一个智力题:
大概是1000瓶药中有一瓶是毒药,老鼠在喝道毒药后24小时死亡,在24小时内最少用多少只老鼠可以检测出老鼠。
发现居然和我以前做过的智力题有点相似
以前的是 8个苹果其中一个比其他的轻,最少用几次可以用天平称出这个最轻的。
在javaeye上看到一个比较经典的回答
把老鼠的生死看成一个开关
所有每只老鼠可以产生2种情况
这样2的10次方就可以产生1024种情况
具体实现是这样的
比如有A,B两只老鼠
有4个瓶子 a,b,c,d
A喝a,b B喝b,c
这样
A死B死 b
A活B活 d
A活B死 c
A死B活 a
也就是2的2次方 可以判断4个瓶子
同理2的3次方 就是最多8个瓶子
把8个瓶子每两个分成一组后就可以按照上面的方法测出8个瓶子中的毒瓶。
所以最后的答案是10。
发现苹果的也可以这样
1.把天平称称一次当做老鼠的个数
2.把天平称一次出的结果当做老鼠的死活
这里有3种结果,一般称的时候是3个苹果 A,B,C
两个A,B放在上面
天平平衡 C是轻的苹果
否则是 A或B
3.苹果的个数是老鼠的个数
所以3的2次方是9 称2次最多可以测出9个苹果中的轻苹果,当然也就可以称出8个的咯。
所以苹果的答案是2。