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字符串的encode与decode研究心得乱码问题解决方法
Mar 23 Python
python网页请求urllib2模块简单封装代码
Feb 07 Python
Python greenlet实现原理和使用示例
Sep 24 Python
编写Python脚本来获取mp3文件tag信息的教程
May 04 Python
通过5个知识点轻松搞定Python的作用域
Sep 09 Python
Python实现连接postgresql数据库的方法分析
Dec 27 Python
widows下安装pycurl并利用pycurl请求https地址的方法
Oct 15 Python
Python简单获取二维数组行列数的方法示例
Dec 21 Python
python实现三维拟合的方法
Dec 29 Python
详解python中*号的用法
Oct 21 Python
TensorFlow tf.nn.softmax_cross_entropy_with_logits的用法
Apr 19 Python
Python中OpenCV实现简单车牌字符切割
Jun 11 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把JPEG图片转换成Progressive JPEG的方法
2014/06/30 PHP
yii2.0实现pathinfo的形式访问的配置方法
2016/04/06 PHP
PHP mysqli事务操作常用方法分析
2017/07/22 PHP
PHP 并发场景的几种解决方案
2019/06/14 PHP
通过实例解析PHP数据类型转换方法
2020/07/11 PHP
JS网络游戏-(模拟城市webgame)提供的一些例子下载
2007/10/14 Javascript
JavaScript 类似flash效果的立体图片浏览器
2010/02/08 Javascript
Js制作简单弹出层DIV在页面居中 中间显示遮罩的具体方法
2013/08/08 Javascript
javascript学习笔记之10个原生技巧
2014/05/21 Javascript
js实现键盘控制DIV移动的方法
2015/01/10 Javascript
jquery实现简单合拢与展开网页面板的方法
2015/09/01 Javascript
asp知识整理笔记3(问答模式)
2015/09/27 Javascript
js转html实体的方法
2016/09/27 Javascript
js获取腾讯视频ID的方法
2016/10/03 Javascript
canvas实现动态小球重叠效果
2017/02/06 Javascript
js原生Ajax的封装和原理详解
2017/03/11 Javascript
详解在vue-cli项目中使用mockjs(请求数据删除数据)
2017/10/23 Javascript
微信小程序实现获取自己所处位置的经纬度坐标功能示例
2017/11/30 Javascript
NodeJs form-data格式传输文件的方法
2017/12/13 NodeJs
在vue中给列表中的奇数行添加class的实现方法
2018/09/05 Javascript
JS随机密码生成算法
2019/09/23 Javascript
《javascript设计模式》学习笔记五:Javascript面向对象程序设计工厂模式实例分析
2020/04/08 Javascript
[03:46]显微镜下的DOTA2第七期——满血与残血
2014/06/20 DOTA
[51:05]DOTA2上海特级锦标赛主赛事日 - 5 败者组决赛Liquid VS EG第一局
2016/03/06 DOTA
Python学习笔记之open()函数打开文件路径报错问题
2018/04/28 Python
Tensorflow卷积神经网络实例
2018/05/24 Python
python使用matplotlib画饼状图
2018/09/25 Python
在Python中append以及extend返回None的例子
2019/07/20 Python
用python打开摄像头并把图像传回qq邮箱(Pyinstaller打包)
2020/05/17 Python
Paradigit比利时电脑卖场:购买笔记本、电脑、平板和外围设备
2016/11/28 全球购物
生物技术专业毕业生求职信范文
2013/12/14 职场文书
2014年国庆节演讲稿
2014/09/19 职场文书
2014年向国旗敬礼活动方案
2014/09/27 职场文书
法定授权委托证明书
2014/09/27 职场文书
解除同居协议书
2015/01/29 职场文书
党支部考察意见范文
2015/06/02 职场文书