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实现简单ftp客户端的方法
Jun 28 Python
Python简单实现enum功能的方法
Apr 25 Python
利用python打印出菱形、三角形以及矩形的方法实例
Aug 08 Python
Python使用Scrapy保存控制台信息到文本解析
Dec 27 Python
Python在groupby分组后提取指定位置记录方法
Apr 20 Python
Python之列表的插入&替换修改方法
Jun 28 Python
Python判断一个文件夹内哪些文件是图片的实例
Dec 07 Python
python实现三维拟合的方法
Dec 29 Python
Python字符串的全排列算法实例详解
Jan 07 Python
python3 pathlib库Path类方法总结
Dec 26 Python
python+opencv边缘提取与各函数参数解析
Mar 09 Python
Python OpenCV实现传统图片格式与base64转换
Jun 13 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
快速开发一个PHP扩展图文教程
2008/12/12 PHP
PhpMyAdmin中无法导入sql文件的解决办法
2010/01/08 PHP
PHP实现格式化文件数据大小显示的方法
2015/01/03 PHP
PHP获取一段文本显示点阵宽度和高度的方法
2015/03/12 PHP
Smarty中的注释和截断功能介绍
2015/04/09 PHP
详解WordPress中过滤链接与过滤SQL语句的方法
2015/12/18 PHP
PHP实现实时生成并下载超大数据量的EXCEL文件详解
2017/10/23 PHP
PHP实现的折半查找算法示例
2017/12/19 PHP
JQuery 学习笔记 选择器之三
2009/07/23 Javascript
javascript中最常用的继承模式 组合继承
2010/08/12 Javascript
创建公共调用 jQuery Ajax 带返回值
2012/08/01 Javascript
详谈jQuery中的this和$(this)
2014/11/13 Javascript
JavaScript使用二分查找算法在数组中查找数据的方法
2015/04/07 Javascript
JavaScript按值删除数组元素的方法
2015/04/24 Javascript
使用EVAL处理jqchart jquery 折线图返回数据无效的解决办法
2015/11/26 Javascript
js实现仿qq消息的弹出窗效果
2016/01/06 Javascript
RequireJs的使用详解
2017/02/19 Javascript
vue.js中Vue-router 2.0基础实践教程
2017/05/08 Javascript
Bootstrap模态框插件使用详解
2017/05/11 Javascript
Vue.use源码学习小结
2018/06/20 Javascript
vue实现键盘输入支付密码功能
2018/08/18 Javascript
Bootstrap的aria-label和aria-labelledby属性实例详解
2018/11/02 Javascript
three.js中多线程的使用及性能测试详解
2021/01/07 Javascript
Python压缩解压缩zip文件及破解zip文件密码的方法
2015/11/04 Python
python3实现绘制二维点图
2019/12/04 Python
无惧面试,带你搞懂python 装饰器
2020/08/17 Python
python3中celery异步框架简单使用+守护进程方式启动
2021/01/20 Python
10张动图学会python循环与递归问题
2021/02/06 Python
英国家居用品和床上用品零售商:P&B Home
2020/01/16 全球购物
如何进行Linux分区优化
2016/09/13 面试题
对标管理实施方案
2014/03/12 职场文书
项目采购员岗位职责
2014/04/15 职场文书
酒店优秀员工事迹材料
2014/06/02 职场文书
离婚财产处理协议书
2014/09/30 职场文书
唐山大地震的观后感
2015/06/05 职场文书
解决ObjectMapper.convertValue() 遇到的一些问题
2021/06/30 Java/Android