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之入门(三)序列
May 25 Python
Python max内置函数详细介绍
Nov 17 Python
Django自定义用户认证示例详解
Mar 14 Python
python 产生token及token验证的方法
Dec 26 Python
Python字符串的常见操作实例小结
Apr 08 Python
PyQt+socket实现远程操作服务器的方法示例
Aug 22 Python
Python如何合并多个字典或映射
Jul 24 Python
Python创建临时文件和文件夹
Aug 05 Python
Python爬虫抓取论坛关键字过程解析
Oct 19 Python
python处理写入数据代码讲解
Oct 22 Python
如何使用Python对NetCDF数据做空间相关分析
Apr 21 Python
详解Python类和对象内容
Jun 22 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 中英文混合排版中处理字符串常用的函数
2007/04/12 PHP
php微信支付之APP支付方法
2015/03/04 PHP
基于ThinkPHP实现批量删除
2015/12/18 PHP
PHP高精确度运算BC函数库实例详解
2017/08/15 PHP
实现PHP中session存储及删除变量
2018/10/15 PHP
JavaScript 对象成员的可见性说明
2009/10/16 Javascript
jquery 问答知识整理
2010/02/11 Javascript
javascript针对DOM的应用分析(四)
2012/04/15 Javascript
js+css实现导航效果实例
2015/02/10 Javascript
JS清除文本框内容离开在恢复及鼠标离开文本框时触发js的方法
2016/01/12 Javascript
对jquery的ajax进行二次封装以及ajax缓存代理组件:AjaxCache详解
2016/04/11 Javascript
如何用JavaScript实现动态修改CSS样式表
2016/05/20 Javascript
JavaScript trim 实现去除字符串首尾指定字符的简单方法
2016/12/27 Javascript
js输入框使用正则表达式校验输入内容的实例
2017/02/12 Javascript
JavaScript实现父子dom同时绑定两个点击事件,一个用捕获,一个用冒泡时执行顺序的方法
2017/03/30 Javascript
ionic选择多张图片上传的示例代码
2017/10/10 Javascript
实例讲解JS中pop使用方法
2019/01/27 Javascript
vue实现输入一位数字转汉字功能
2019/12/13 Javascript
[58:59]完美世界DOTA2联赛PWL S3 access vs CPG 第一场 12.13
2020/12/16 DOTA
Python中的闭包总结
2014/09/18 Python
详解Python3.1版本带来的核心变化
2015/04/07 Python
Python 实现数据库(SQL)更新脚本的生成方法
2017/07/09 Python
python中numpy包使用教程之数组和相关操作详解
2017/07/30 Python
Python理解递归的方法总结
2019/01/28 Python
Django model update的多种用法介绍
2020/03/28 Python
python和pywin32实现窗口查找、遍历和点击的示例代码
2020/04/01 Python
python和php学习哪个更有发展
2020/06/17 Python
详解HTML5布局和HTML5标签
2020/10/26 HTML / CSS
优衣库台湾官网:UNIQLO台湾
2019/02/01 全球购物
什么是JNDI的上下文?如何初始化JNDI上下文
2012/03/10 面试题
CSS实现fullpage.js全屏滚动效果的示例代码
2021/03/24 HTML / CSS
应届医学毕业生求职信分享
2013/12/02 职场文书
市场营销专业个人求职信范文
2013/12/14 职场文书
银行爱岗敬业演讲稿
2014/05/05 职场文书
在教室放鞭炮的检讨书
2014/09/28 职场文书
Spring Boot项目如何优雅实现Excel导入与导出功能
2022/06/10 Java/Android