Python兔子毒药问题实例分析


Posted in Python onMarch 05, 2015

本文实例分析了Python兔子毒药问题。分享给大家供大家参考。具体分析如下:

问题大致是这样的:1000瓶无色无味的液体,其中一瓶为毒药,其它皆为清水,毒药只取一滴与清水混合为一瓶也可以毒死兔子。现在有10只兔子,当兔子喝下毒药两个小时后死去,请设计一种方案,能够在24小时内找到这瓶毒药。
................2分钟后
前面的问题你一定想清楚了,那么略改动一下:1000瓶无色无味的液体,其中一瓶为毒药,其它皆为清水,毒药只取一滴与清水混合为一瓶也可以毒死兔子。现在有10只兔子,当兔子喝下毒药20个小时后死去,请设计一种方案,能够在24小时内找到这瓶毒药。
................2分钟后
有多种方法,比如我每隔5分钟给兔子喝一次100瓶液体混合在一起的东西,根据兔子死去的先后顺序,就可以判断是那一瓶了。

有没有更好的办法呢,我这里仅仅提供一种时间最优的方法,也就是在20个小时找到这瓶毒药。当然也可以有死的兔子最少,在死去兔子和时间找到一个最佳折中点的优化问题。
方法如下:
给10只兔子编号1-10,每只兔子代表一个数,列表如下:
编号    1    2    3    4    5    ...    10
数字    1    2    4    8    16    ...    512

瓶子也有编号,依次为1-1000。    呵呵,聪明的你应该知道我要怎么做了吧,不过我还是要说下去,并写python代码来实现。
我希望是当编号为Y1,Y2,Y3...的兔子死去时,可以推导出编号为X瓶子为毒药。比如编号为1,2,4的兔子死去,那就得知 兔子对应的数字 为1+2+8=11,就是编号为11的瓶子是毒药。比如编号为1,4,10的兔子死去,那就得知 兔子对应的数字 为1+8+512=521,就是编号为521的瓶子是毒药。
现在的问题就是要知道编号不同的每只兔子要喝哪几瓶液体。

Python代码如下:

def main():
    """
  baselist是兔子编号从1-10对应的数字,
  result是最终每只兔子要喝的液体
    """
  baselist=[1,2,4,8,16,32,64,128,256,512]
  result=[[],[],[],[],[],[],[],[],[],[]]
  for water in range(1,1001):
    watertmp=water
    for i in range(9,-1,-1):
      if (watertmp-baselist[i])>=0:
        watertmp -= baselist[i]
        result[i].append(water)
  for i in range(1,11):
    print "The Num %d rabit need drink the next liquid " % i+1,result[i]
  pass
if __name__=="__main__":
  main()

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
Python极简代码实现杨辉三角示例代码
Nov 15 Python
Python列表list解析操作示例【整数操作、字符操作、矩阵操作】
Jul 25 Python
Python使用回溯法子集树模板解决迷宫问题示例
Sep 01 Python
python爬取亚马逊书籍信息代码分享
Dec 09 Python
Python+OpenCV图片局部区域像素值处理改进版详解
Jan 23 Python
浅谈Scrapy网络爬虫框架的工作原理和数据采集
Feb 07 Python
Django ORM多对多查询方法(自定义第三张表&ManyToManyField)
Aug 09 Python
python切片(获取一个子列表(数组))详解
Aug 09 Python
Anaconda3中的Jupyter notebook添加目录插件的实现
May 18 Python
Python 如何创建一个线程池
Jul 28 Python
总结Pyinstaller打包的高级用法
Jun 28 Python
Python使用socket去实现TCP客户端和TCP服务端
Apr 12 Python
Python获取服务器信息的最简单实现方法
Mar 05 #Python
Python实现简单的可逆加密程序实例
Mar 05 #Python
Python装饰器的函数式编程详解
Feb 27 #Python
python分析nignx访问日志脚本分享
Feb 26 #Python
python分析apache访问日志脚本分享
Feb 26 #Python
Python构造函数及解构函数介绍
Feb 26 #Python
python中的__slots__使用示例
Feb 26 #Python
You might like
win7下memCache的安装过程(具体操作步骤)
2013/06/28 PHP
php使用ftp远程上传文件类(完美解决主从文件同步问题的方法)
2016/09/23 PHP
PHP simplexml_load_file()函数讲解
2019/02/03 PHP
PHP实现的用户注册表单验证功能简单示例
2019/02/25 PHP
laravel 解决ajax异步提交数据,并还回填充表格的问题
2019/10/15 PHP
jQuery语法总结和注意事项小结
2012/11/11 Javascript
JS中使用sort结合localeCompare实现中文排序实例
2014/07/23 Javascript
javascript面向对象之访问对象属性的两种方式分析
2015/01/13 Javascript
JavaScript简介
2015/02/15 Javascript
JavaScript制作简易的微信打飞机
2015/03/31 Javascript
js动态添加的DIV中的onclick事件简单实例
2016/07/25 Javascript
jQuery Validate插件自定义验证规则的方法
2016/12/27 Javascript
JS中Select下拉列表类(支持输入模糊查询)功能
2017/01/17 Javascript
Node.js 中使用 async 函数的方法
2017/11/20 Javascript
浅谈vue中改elementUI默认样式引发的static与assets的区别
2018/02/03 Javascript
vue中v-for加载本地静态图片方法
2018/03/03 Javascript
使用Vue-cli 3.0搭建Vue项目的方法
2018/06/07 Javascript
Python写的Tkinter程序屏幕居中方法
2015/03/10 Python
python解决Fedora解压zip时中文乱码的方法
2016/09/18 Python
python奇偶行分开存储实现代码
2018/03/19 Python
深入分析python数据挖掘 Json结构分析
2018/04/21 Python
python调用tcpdump抓包过滤的方法
2018/07/18 Python
win10安装tesserocr配置 Python使用tesserocr识别字母数字验证码
2020/01/16 Python
python使用自定义钉钉机器人的示例代码
2020/06/24 Python
HTML5中的进度条progress元素简介及兼容性处理
2016/06/02 HTML / CSS
SmartBuyGlasses英国:购买太阳镜和眼镜
2018/01/29 全球购物
美国女士内衣在线折扣商店:One Hanes Place
2019/03/24 全球购物
医院办公室主任职责
2013/12/29 职场文书
节约用水倡议书
2014/04/16 职场文书
党员先锋岗事迹材料
2014/05/08 职场文书
师德师风自我剖析材料
2014/09/27 职场文书
自主招生英文自荐信
2015/03/25 职场文书
老乡会致辞
2015/07/28 职场文书
解决Go gorm踩过的坑
2021/04/30 Golang
python操作xlsx格式文件并读取
2021/06/02 Python
Python sklearn分类决策树方法详解
2022/09/23 Python