题目:
有1000桶酒,其中1桶有毒。而一旦吃了,毒性会在1周后发作。现在我们用小老鼠做实验,要在1周内找出那桶毒酒,问最少需要多少老鼠。
解答:二进制解法,酒从0——999标号,不过不用十进制,而用二进制表示。由于表示1000个数需要十位二进制,故二进制统一用十位数表示,不满十位的前面充零,对每个酒桶标号做如下处理:若第i为为1,则给第i只老鼠喝酒,则一个礼拜后,死亡的老鼠标号就能还原出毒酒的二进制标号,从而得知哪桶酒有毒。由于这里用到了十位二进制,故而需要十只老鼠。
反思:答案不是我原创,事后分析如何得出这种解法,为何会想到用二进制?我觉得可以这么入手:假想现在有K只老鼠横列在前,对于每桶酒,老鼠有两种选择:喝或者不喝。这种双状态就启发人用二进制。现假设喝酒一周后有X只老鼠挂了,怎么能从哪些老鼠挂了得到一桶酒的位置?这里老鼠提供的信息本质上就是位置信息,从一组位置如何得出一个位置?进一步联想,可以考虑用二进制串的位组合得出一个位置。得出如上解法。好思路!!