• 生活中的数据结构


    题目:话说有1000个瓶子,其中999瓶水,1瓶有毒,外观没有任何区别。现在有10只小白鼠和无限多的干净试管,如何找出那瓶毒药?

    知识点:就是二分法的应用

    分析:由于2^10 > 1000,因此可以这样解决:

    第一次:任意拿出500瓶混合到一支试管中,拿一只小白鼠试吃,两种结果,有毒鼠死,无毒鼠活;无论结果如何,都可以判断出毒药在哪500瓶中;最多耗费第一只小白鼠;2

    第二次:将有毒的500瓶分成250瓶一份,拿一只小白鼠试吃,两种结果,有毒鼠死,无毒鼠活;无论结果如何,都可以判断出毒药在哪250瓶中;最多耗费第二只小白鼠;2

    第三次:将有毒的250瓶分成125瓶一份,拿一只小白鼠试吃,两种结果,有毒鼠死,无毒鼠活;无论结果如何,都可以判断出毒药在哪125瓶中;最多耗费第三只小白鼠;2

    第四次:将有毒的125瓶分成63瓶一份,拿一只小白鼠试吃,两种结果,有毒鼠死,无毒鼠活;无论结果如何,都可以判断出毒药在哪63瓶中;最多耗费第四只小白鼠;2

    第五次:将有毒的63瓶分成32瓶一份,拿一只小白鼠试吃,两种结果,有毒鼠死,无毒鼠活;无论结果如何,都可以判断出毒药在哪32瓶中;最多耗费第五只小白鼠;2

    第六次:将有毒的32瓶分成16瓶一份,拿一只小白鼠试吃,两种结果,有毒鼠死,无毒鼠活;无论结果如何,都可以判断出毒药在哪16瓶中;最多耗费第六只小白鼠;2

    第七次:将有毒的16瓶分成8瓶一份,拿一只小白鼠试吃,两种结果,有毒鼠死,无毒鼠活;无论结果如何,都可以判断出毒药在哪8瓶中;最多耗费第七只小白鼠;2

    第八次:将有毒的8瓶分成4瓶一份,拿一只小白鼠试吃,两种结果,有毒鼠死,无毒鼠活;无论结果如何,都可以判断出毒药在哪4瓶中;最多耗费第八只小白鼠;2

    第九次:将有毒的4瓶分成22瓶一份,拿一只小白鼠试吃,两种结果,有毒鼠死,无毒鼠活;无论结果如何,都可以判断出毒药在哪2瓶中;最多耗费第九只小白鼠;2

    第十次:将有毒的2瓶分成1瓶一份,拿一只小白鼠试吃,两种结果,有毒鼠死,无毒鼠活;无论结果如何,都可以判断出毒药在哪1瓶中;最多耗费第十只小白鼠;2

    递归算法其实就是:

    if()

  • 相关阅读:
    数组里面为对象根据某一属性排序
    理由<a>标签跳转到对应锚点
    jquery对复选框选中
    Fullcalendar
    es6学习
    vue 关于树杈图问题
    input 复选框样式修改
    GAMES101 作业2
    一份自己iOS 面试题,拿到15K35K,分享出来
    Cesium 一款面向三维地球和地图的,世界级的JavaScript开源产品
  • 原文地址:https://www.cnblogs.com/guochaoxxl/p/14278705.html
Copyright © 2020-2023  润新知