老鼠老鼠的二进制编码

有 1000 个一模一样的瓶子,其中有 999 瓶是普通的水,有一瓶是毒药。任何喝下毒药的生物都会在一星期之后死亡。现在,你只有 10 只小白鼠和一星期的时间,如何检验出哪个瓶子里有毒药?

这是IBM Ponder This 2011 3月的题目。

这个问题的答案也很经典经典:把瓶子从 0 到 999 依次编号,然后全部转换为 10 位二进制数。让第一只老鼠喝掉所有二进制数右起第一位是 1 的瓶子,让第二只老鼠喝掉所有二进制数右起第二位是 1 的瓶子,等等。一星期后,如果第一只老鼠死了,就知道毒药瓶子的二进制编号中,右起第一位是 1 ;如果第二只老鼠没死,就知道毒药瓶子的二进制编号中,右起第二位是 0 ….每只老鼠的死活都能确定出 10 位二进制数的其中一位,由此便可 知道毒药瓶子的编号了。

稻田社区 http://www.tuanpower.com

                                      分享知识和见解 找到气味相投的朋友

猜你喜欢

转载自ruziniu.iteye.com/blog/1152956