当前位置 博文首页 > 文章内容

    【大厂智力题】瓶水有毒问题

    作者:糖丝橙 栏目:IT相关内容 时间:2020-05-06 13:10:19

    本站于2023年9月4日。收到“大连君*****咨询有限公司”通知
    说我们IIS7站长博客,有一篇博文用了他们的图片。
    要求我们给他们一张图片6000元。要不然法院告我们

    为避免不必要的麻烦,IIS7站长博客,全站内容图片下架、并积极应诉
    博文内容全部不再显示,请需要相关资讯的站长朋友到必应搜索。谢谢!

    另祝:版权碰瓷诈骗团伙,早日弃暗投明。

    相关新闻:借版权之名、行诈骗之实,周某因犯诈骗罪被判处有期徒刑十一年六个月

    叹!百花齐放的时代,渐行渐远!



         瓶水有毒问题的变型有很多:

         1000瓶水有1瓶水有毒,老鼠喝一滴就会死,但是需要一月毒发,请问最少需要多少老鼠才能找到那瓶有毒的水。

         1000瓶药水,1瓶有毒,老鼠毒发24h,如何用最少的老鼠在24h内找出毒药。

    ...

         反正老鼠就不是立马死(老鼠:我太难了)。所以在实际可行的情况下,无法利用1只老鼠测出哪瓶水有毒。

         这个时候就需要动点脑筋了。如果你了解布隆过滤器,那么这个问题对你来说,是比较轻松的事情(思路可借鉴呀)。

         这道智力题,重在考察你对二进制生活中的场景的应用。

         我们知道 2的10次方等于1024,1024以内的所有自然数都可以用10个数位的二进制数表示出来。1000 <= 1024。那就好办了,

         我们将1000瓶水从water[0]到water[999]分别进行编号,并转化成10个数位的二进制数。

    9 8 7 6 5 4 3 2 1 0 位数

    0 0 0 0 0 0 0 0 0 0 对应编号0

    0 0 0 0 0 0 0 0 0 1 对应编号1

    1 1 1 1 1 0 0 1 1 1 对应编号999

         我们将10只老鼠从mouse[0]到mouse[9]进行编号

         让第mouse[0]只老鼠喝第0位为1的水

         让第mouse[1]只老鼠喝第1位为1的所有的水

         让第mouse[2]只老鼠喝第2位为1的所有的水

    依次类推

         最后可以根据老鼠的死亡情况,推算出编号n。从mouse[0]到mouse[9] 活着的老鼠对应位为0,死了的老鼠对应位为1。


    文章来源:CSDN博客

    原文链接:https://blog.csdn.net/qq_42322103/article/details/104440440

    如有侵权,请联系本人删除