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 相关文章推荐
RC4文件加密的python实现方法
Jun 30 Python
Python语言描述最大连续子序列和
Dec 05 Python
python 平衡二叉树实现代码示例
Jul 07 Python
python requests 测试代理ip是否生效
Jul 25 Python
如何利用Anaconda配置简单的Python环境
Jun 24 Python
Python自定义一个异常类的方法
Jun 27 Python
自适应线性神经网络Adaline的python实现详解
Sep 30 Python
python 计算方位角实例(根据两点的坐标计算)
Jan 17 Python
Python异步编程之协程任务的调度操作实例分析
Feb 01 Python
pyqt5中动画的使用详解
Apr 01 Python
Python爬虫实现百度翻译功能过程详解
May 29 Python
使用K.function()调试keras操作
Jun 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
PHP学习之正则表达式
2011/04/17 PHP
PHP 实现explort() 功能的详解
2013/06/20 PHP
Laravel 5.5官方推荐的Nginx配置学习教程
2017/10/06 PHP
javascript操作cookie的文章(设置,删除cookies)
2010/04/01 Javascript
jQuery:节点(插入,复制,替换,删除)操作
2013/03/04 Javascript
动态标签 悬停效果 延迟加载示例代码
2013/11/21 Javascript
javascript history对象(历史记录)使用方法(实现浏览器前进后退)
2014/01/07 Javascript
javascript实现了照片拖拽点击置顶的照片墙代码
2015/04/03 Javascript
jQuery实现鼠标单击网页文字后在文本框显示的方法
2015/05/06 Javascript
jquery实现顶部向右伸缩的导航区域代码
2015/09/02 Javascript
Boostrap实现的登录界面实例代码
2016/10/09 Javascript
基于Nodejs利用socket.io实现多人聊天室
2017/02/22 NodeJs
jQuery中库的引用方法
2018/01/06 jQuery
Vue 中使用vue2-highcharts实现top功能的示例
2018/03/05 Javascript
react 实现页面代码分割、按需加载的方法
2018/04/03 Javascript
JS中的算法与数据结构之集合(Set)实例详解
2019/08/20 Javascript
js实现橱窗展示效果
2020/01/11 Javascript
深入了解JS之作用域和闭包
2020/06/16 Javascript
python使用cookie库操保存cookie详解
2014/03/03 Python
Linux 发邮件磁盘空间监控(python)
2016/04/23 Python
Python探索之SocketServer详解
2017/10/28 Python
python爬虫的一个常见简单js反爬详解
2019/07/09 Python
Python协程 yield与协程greenlet简单用法示例
2019/11/22 Python
基于Python获取城市近7天天气预报
2019/11/26 Python
keras CNN卷积核可视化,热度图教程
2020/06/22 Python
详解Python流程控制语句
2020/10/28 Python
pycharm 复制代码出现空格的解决方式
2021/01/15 Python
Ancheer官方户外和运动商店:销售电动自行车
2019/08/07 全球购物
Java语言程序设计测试题判断题部分
2013/01/06 面试题
《商鞅南门立木》教学反思
2014/02/16 职场文书
化工操作工岗位职责
2014/04/29 职场文书
创先争优一句话承诺
2014/05/29 职场文书
工作证明范本(2篇)
2014/09/14 职场文书
2015年大学社团工作总结
2015/04/09 职场文书
2016大学生社会实践单位评语
2015/12/01 职场文书
JS函数式编程实现XDM一
2022/06/16 Javascript