经典软件面试题(1)

从每瓶酒中取出若干滴,取几滴由10个数位上1的个数决定,每滴放入10个大碗对应的碗中(为了描述的方便,假设有10个大碗,并从1到10进行编号)。最后,让10只老鼠分别喝10个碗中的酒。被毒死的老鼠用1表示,没有被毒死的老鼠用0表示,这样就构成了一个10个数位的二进制数,这个二进制数转换成10进制数,就是酒瓶的编号,此编号的这瓶酒就是毒酒。

第2种作法:

前500瓶,每瓶取一点,放在一起,给第1只老鼠喝,老鼠死了,就是前500瓶,如果没死,就在后500瓶,即第1只老鼠可以将范围缩小一半到500瓶。

500瓶的一半250瓶,每瓶取一点,放在一起,给第2只老鼠喝,老鼠死了,就是所取的250瓶,如果没死,就在另外250瓶,即第2只老鼠可以将范围再缩小一半到250瓶。

第3只老鼠,将范围再缩小到125瓶。

第4只老鼠,将范围再缩小到63瓶。

第5只老鼠,将范围再缩小到32瓶。

第6只老鼠,将范围再缩小到16瓶。

第7只老鼠,将范围再缩小到8瓶。

第8只老鼠,将范围再缩小到4瓶。

第9只老鼠,将范围再缩小到2瓶。

第10只老鼠,将范围再缩小到1瓶。

来源:Vincent_Song

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2012年9月12日
下一篇 2012年9月13日

相关推荐