毒酒问题---1000桶酒,其中1桶有毒。而一旦吃了,毒性会在1周后发作。问最少需要多少只老鼠可在一周内找出毒酒

来源:互联网 发布:哈尔滨时时网络 天行 编辑:程序博客网 时间:2024/04/30 06:01

如题。

 

本题考查的是二进制编码问题。

 

如对1000桶按1~1000编码,需要10位二进制数。

 

因此只需要取10只老鼠,每只老鼠只喝其对应位数为1的编号的酒。

即10只老鼠按以下编码:

 

第一只 00000 00001

第二只 00000 00010

第三只 00000 00100

第四只 00000 01000

...

第十只 10000 00000

 

每只老鼠只喝其编码与酒编码做位与运算非0的酒。如果毒酒的编码在某一位为1,则监控该位的老鼠必喝,结果为1.

 

即把10只老鼠的结果,按位填入一个10位二进制数中,其结果即为毒酒编号。

 

例如:编号为10001 00011的酒是毒酒。则对应的只有第一只,第二只,第六只,第十只死亡。其对应位数置1,即为10001 00011

0 0
原创粉丝点击