面试题-位掩码

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-23 05:48   11   0

问题:

现有8杯水,其中有一杯是有毒的,中毒后24小时必死。请问24小时内最少需要多少只老鼠,可以测出哪杯水有毒?

将这十杯水分别编号为1-10,并且用二进制和矩阵来表示

0 0 0 1 一号杯

0 0 1 0 二号杯

0 0 1 1 三号杯

0 1 0 0 四号杯

0 1 0 1 五号杯

0 1 1 0 六号杯

0 1 1 1 七号杯

1 0 0 0 八号杯

转置矩阵

依上述场景,取4只容器,转置后的矩阵数列配组合溶液:
取数位上为1的水,放入相应的容器,即:
第一杯:只包含8号水
第二杯:包含4、5、6、7号水
第三杯:包含2、3、6、7号水
第四杯:包含1、3、5、7号水

取4只老鼠,编号1、2、3、4,分别喝下第一杯...第四杯水,
4只老鼠的生死状态依次记为 w x y z,(w,x,y,z = {0,1})
死亡记作1,非死亡记作0
将二进制数列wxyz转为十进制,则得到有毒水的号码。

十个杯子呢?

最多需要四只老鼠来测试。

简单总结:

8杯水:2^3,需要四个二进制,就是4只老鼠

9杯水:2^3< x <2^4,需要四只

...

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP