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的paramiko模块实现远程控制和传输示例
Oct 13 Python
Python xlwt设置excel单元格字体及格式
Apr 18 Python
Python实现的栈(Stack)
Jan 26 Python
使用EduBlock轻松学习Python编程
Oct 08 Python
python 返回一个列表中第二大的数方法
Jul 09 Python
python变量的存储原理详解
Jul 10 Python
Python可变参数会自动填充前面的默认同名参数实例
Nov 18 Python
基于python3抓取pinpoint应用信息入库
Jan 08 Python
python异步Web框架sanic的实现
Apr 27 Python
浅析Python 简单工厂模式和工厂方法模式的优缺点
Jul 13 Python
Python调用飞书发送消息的示例
Nov 10 Python
PyCharm Community安装与配置的详细教程
Nov 24 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
YII动态模型(动态表名)支持分析
2016/03/29 PHP
如何利用预加载优化Laravel Model查询详解
2017/08/11 PHP
php获取微信共享收货地址的方法
2017/12/21 PHP
JavaScript 学习点滴记录
2009/04/24 Javascript
面向对象的编程思想在javascript中的运用上部
2009/11/20 Javascript
Json2Template.js 基于jquery的插件 绑定JavaScript对象到Html模板中
2011/10/29 Javascript
jQuery多项选项卡的实现思路附样式及代码
2014/06/03 Javascript
javascript实现俄罗斯方块游戏的思路和方法
2015/04/27 Javascript
利用原生JS自动生成文章标题树的实例
2016/08/22 Javascript
基于vue.js实现图片轮播效果
2016/12/01 Javascript
详解jQuery简单的表单应用
2016/12/16 Javascript
JavaScript实现星星等级评价功能
2017/03/22 Javascript
微信小程序之获取当前位置经纬度以及地图显示详解
2017/05/09 Javascript
js中document.write和document.writeln的区别
2018/03/11 Javascript
vue里面v-bind和Props 利用props绑定动态数据的方法
2018/08/27 Javascript
vue+element 模态框表格形式的可编辑表单实现
2019/06/07 Javascript
详解在vue-cli3.0中自定css、js和图片的打包路径
2019/08/26 Javascript
解决layui批量传值到后台操作时出现传值为空的问题
2019/09/28 Javascript
微信小程序如何加载数据库真实数据的实现
2020/03/04 Javascript
js实现九宫格抽奖
2020/03/19 Javascript
js最全的数组的降维5种办法(小结)
2020/04/28 Javascript
安装Python和pygame及相应的环境变量配置(图文教程)
2017/06/04 Python
在dataframe两列日期相减并且得到具体的月数实例
2018/07/03 Python
Python基于datetime或time模块分别获取当前时间戳的方法实例
2019/02/19 Python
python中for循环把字符串或者字典添加到列表的方法
2019/07/20 Python
python SVD压缩图像的实现代码
2019/11/05 Python
HTML5中5个简单实用的API(第二篇,含全屏、可见性、拍照、预加载、电池状态)
2014/05/07 HTML / CSS
波兰在线运动商店:YesSport
2020/07/23 全球购物
统计每一学生的平均成绩
2014/06/06 面试题
物业管理应届生求职信
2013/10/28 职场文书
蔬菜基地的创业计划书
2014/01/06 职场文书
优秀中学生事迹材料
2014/01/31 职场文书
人力资源作业细则
2014/03/03 职场文书
Nginx 负载均衡是什么以及该如何配置
2021/03/31 Servers
JS封装cavans多种滤镜组件
2022/02/15 Javascript
nginx刷新页面出现404解决方案(亲测有效)
2022/03/18 Servers