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中cPickle用法例子分享
Jan 03 Python
Python SQLite3数据库操作类分享
Jun 10 Python
python使用any判断一个对象是否为空的方法
Nov 19 Python
Python实现在线程里运行scrapy的方法
Apr 07 Python
Python中map和列表推导效率比较实例分析
Jun 17 Python
pygame库实现移动底座弹球小游戏
Apr 14 Python
tensorflow之自定义神经网络层实例
Feb 07 Python
jupyter notebook 多行输出实例
Apr 09 Python
利用Python实现字幕挂载(把字幕文件与视频合并)思路详解
Oct 21 Python
最新版 Windows10上安装Python 3.8.5的步骤详解
Nov 28 Python
python之json文件转xml文件案例讲解
Aug 07 Python
python使用matplotlib绘制图片时x轴的刻度处理
Aug 30 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
Mysql的常用命令
2006/10/09 PHP
打造计数器DIY三步曲(上)
2006/10/09 PHP
PHP输出英文时间日期的安全方法(RFC 1123格式)
2014/06/13 PHP
PHP下SSL加密解密、验证、签名方法(很简单)
2020/06/28 PHP
PHP+mysql实现的三级联动菜单功能示例
2019/02/15 PHP
javascript编程起步(第三课)
2007/02/27 Javascript
替代window.event.srcElement效果的可兼容性的函数
2009/12/18 Javascript
window.onload和$(function(){})的区别介绍
2013/10/30 Javascript
JavaScript中window.open用法实例详解
2015/04/15 Javascript
js+HTML5基于过滤器从摄像头中捕获视频的方法
2015/06/16 Javascript
jquery实现点击变换导航样式的方法
2015/08/31 Javascript
js时间戳转为日期格式的方法
2015/12/28 Javascript
jQuery实现鼠标经过购物车出现下拉框代码(推荐)
2016/07/21 Javascript
ionic2 tabs使用 Modal底部tab弹出框
2016/12/30 Javascript
微信小程序 高德地图SDK详解及简单实例(源码下载)
2017/01/11 Javascript
vue实现在表格里,取每行的id的方法
2018/03/09 Javascript
微信小程序实现简单表格
2019/02/14 Javascript
使用 Vue 实现一个虚拟列表的方法
2019/08/20 Javascript
基于layui的下拉列表的数据回显方法
2019/09/24 Javascript
vue实现二级导航栏效果
2019/10/19 Javascript
vue css 引入asstes中的图片无法显示的四种解决方法
2020/03/16 Javascript
vue 使用localstorage实现面包屑的操作
2020/11/16 Javascript
使用Python的Tornado框架实现一个简单的WebQQ机器人
2015/04/24 Python
解决python写入mysql中datetime类型遇到的问题
2018/06/21 Python
解决keras模型保存h5文件提示无此目录问题
2020/07/01 Python
python 如何调用 dubbo 接口
2020/09/24 Python
书法培训心得体会
2014/01/05 职场文书
大学生关于奋斗的演讲稿
2014/01/09 职场文书
护士求职自荐信范文
2014/03/19 职场文书
党员个人整改措施
2014/10/24 职场文书
2015年电教工作总结
2015/05/26 职场文书
2015年中学团委工作总结
2015/07/22 职场文书
关爱留守儿童主题班会
2015/08/13 职场文书
2016母亲节感恩话语
2015/12/09 职场文书
python基础之类方法和静态方法
2021/10/24 Python
2022微信温控新功能上线
2022/05/09 数码科技