zoukankan      html  css  js  c++  java
  • 小鼠试毒问题(二进制)

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

    如题。

    分析思路:
    要用尽可能少的老鼠完成相对大的任务量,要想到把问题进行对数分解。
    从而不难想到 210=1024 2^{10}=10242
    10
    =1024 这个数量关系。

    解法一:
    二进制编码。

    首先对1000桶酒按照1~1000进行二进制编码,因为 210 2^{10}2
    10
    = 1024 > 1000,因此需要10位二进制。
    故只需要取10只老鼠,每只老鼠只喝其对应位数为1的编号的酒。

    然后给10只老鼠按以下编码:
    第一只 0000000001
    第二只 0000000010
    第三只 0000000100

    第十只 1000000000

    结果举例:编号为1000100011的酒是毒酒。
    则对应喝酒的只有第一只,第二只,第六只,第十只死亡。

    故最后可从哪几只老鼠死亡来判断毒酒的编号是多少。
    ————————————————
    版权声明:本文为CSDN博主「ChanYipFan」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/weixin_43530726/article/details/87920137

  • 相关阅读:
    stm32时钟分析
    STM32中断优先级彻底讲解
    STM32 外部中断简介
    sencha touch 选择器
    sench touch 页面跳转
    sencha touch 学习汇总(转)
    ES6项目构建(babel+gulp+webpack)
    sencha touch
    sencha touch 目录结构
    angular学习笔记(6)- 指令
  • 原文地址:https://www.cnblogs.com/sunlong88/p/11770058.html
Copyright © 2011-2022 走看看