zoukankan      html  css  js  c++  java
  • 生活中的数据结构

    题目:话说有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()

  • 相关阅读:
    把excel导入的自定义时间改成yyyyMMdd
    sql多表查询时怎么获取查到的字段
    select 和 input 的不可编辑,input隐藏
    关闭dialog(lhgdialog)
    ajax 和 post 传多个参数值具体怎么写
    弹出提示框,对话框
    function方法中this的用法
    combobox获取值
    easyui-panel 滚动条禁用
    字符串用逗号隔开;有逗号的字符串遍历
  • 原文地址:https://www.cnblogs.com/guochaoxxl/p/14278705.html
Copyright © 2011-2022 走看看