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调用java模块SmartXLS和jpype修改excel文件的方法
Apr 28 Python
Python set常用操作函数集锦
Nov 15 Python
python实现Adapter模式实例代码
Feb 09 Python
Django代码性能优化与Pycharm Profile使用详解
Aug 26 Python
python中退出多层循环的方法
Nov 27 Python
Python面向对象之类的封装操作示例
Jun 08 Python
Django中使用MySQL5.5的教程
Dec 18 Python
TensorFlow的reshape操作 tf.reshape的实现
Apr 19 Python
Win 10下Anaconda虚拟环境的教程
May 18 Python
tensorflow 20:搭网络,导出模型,运行模型的实例
May 26 Python
Python logging模块handlers用法详解
Aug 14 Python
Python用access判断文件是否被占用的实例方法
Dec 17 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
全国FM电台频率大全 - 4 山西省
2020/03/11 无线电
PHP实现自动登入google play下载app report的方法
2014/09/23 PHP
php数字运算验证码的实现代码
2015/07/30 PHP
深入讲解PHP Session及如何保持其不过期的方法
2015/08/18 PHP
CI框架数据库查询之join用法分析
2016/05/18 PHP
jquery 插件之仿“卓越亚马逊”首页弹出菜单效果
2008/12/25 Javascript
深入理解JavaScript系列(6) 强大的原型和原型链
2012/01/15 Javascript
JS 实现获取打开一个界面中输入的值
2013/03/19 Javascript
jquery实现将获取的颜色值转换为十六进制形式的方法
2014/12/20 Javascript
JS实现同一个网页布局滑动门和TAB选项卡实例
2015/09/23 Javascript
seajs加载jquery时提示$ is not a function该怎么解决
2015/10/23 Javascript
js实现文字超出部分用省略号代替实例代码
2016/09/01 Javascript
Nautil 中使用双向数据绑定的实现
2019/10/02 Javascript
微信小程序点击view动态添加样式过程解析
2020/01/21 Javascript
Electron整合React使用搭建开发环境的步骤详解
2020/06/07 Javascript
[01:14:12]2018DOTA2亚洲邀请赛4.7 总决赛 LGD vs Mineski 第二场
2018/04/09 DOTA
python 安装virtualenv和virtualenvwrapper的方法
2017/01/13 Python
使用pandas中的DataFrame数据绘制柱状图的方法
2018/04/10 Python
pandas数值计算与排序方法
2018/04/12 Python
使用TensorFlow实现SVM
2018/09/06 Python
Python实现查找字符串数组最长公共前缀示例
2019/03/27 Python
wxPython多个窗口的基本结构
2019/11/19 Python
Python判断三段线能否构成三角形的代码
2020/04/12 Python
PyQt5连接MySQL及QMYSQL driver not loaded错误解决
2020/04/29 Python
scrapy实践之翻页爬取的实现
2021/01/05 Python
《小熊住山洞》教学反思
2014/02/21 职场文书
我的梦中国梦演讲稿
2014/04/23 职场文书
纪检监察建议书
2014/05/19 职场文书
就职演讲稿范文
2014/05/19 职场文书
考察现实表现材料
2014/05/19 职场文书
人事专员岗位职责说明书
2014/07/30 职场文书
爬山的活动方案
2014/08/16 职场文书
员工激励培训演讲稿
2014/09/16 职场文书
致百米运动员广播稿5篇
2014/10/13 职场文书
给老师的感谢信
2015/01/20 职场文书
关于公司年会的开幕词
2016/03/04 职场文书