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 SQLAlchemy基本操作和常用技巧(包含大量实例,非常好)
May 06 Python
详解Django框架中的视图级缓存
Jul 23 Python
分析Python中设计模式之Decorator装饰器模式的要点
Mar 02 Python
python爬虫实现中英翻译词典
Jun 25 Python
django连接oracle时setting 配置方法
Aug 29 Python
Python 根据数据模板创建shapefile的实现
Nov 26 Python
Python3标准库之functools管理函数的工具详解
Feb 27 Python
基于python爬取有道翻译过程图解
Mar 31 Python
Python多线程thread及模块使用实例
Apr 28 Python
python 牛顿法实现逻辑回归(Logistic Regression)
Oct 15 Python
pycharm 如何查看某一函数源码的快捷键
May 12 Python
python plt.plot bar 如何设置绘图尺寸大小
Jun 01 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简单的伪原创程序,配合商城采集用的
2010/10/12 PHP
解析yahoo邮件用phpmailer发送的实例
2013/06/24 PHP
php向js函数传参的几种方法
2014/08/10 PHP
php生成HTML文件的类方法
2019/10/11 PHP
Centos7安装swoole扩展操作示例
2020/03/26 PHP
解析window.open的使用方法总结
2013/06/19 Javascript
js中widow.open()方法使用详解
2013/07/30 Javascript
AngularJS之依赖注入模拟实现
2016/08/19 Javascript
jquery封装插件时匿名函数形参和实参的写法解释
2017/02/14 Javascript
Bootstrap 响应式实用工具实例详解
2017/03/29 Javascript
浅谈Vue内置component组件的应用场景
2018/03/27 Javascript
解决angular2在双向数据绑定时[(ngModel)]无法使用的问题
2018/09/13 Javascript
使用React手写一个对话框或模态框的方法示例
2019/04/25 Javascript
详解vue-cli3开发Chrome插件实践
2019/05/29 Javascript
JS实现处理时间,年月日,星期的公共方法示例
2019/05/31 Javascript
浅谈layui使用模板引擎动态渲染元素要注意的问题
2019/09/14 Javascript
Vue搭建后台系统需要注意的问题
2019/11/08 Javascript
vue实现一个矩形标记区域(rectangle marker)的方法
2020/10/28 Javascript
node.js如何操作MySQL数据库
2020/10/29 Javascript
python实现获取序列中最小的几个元素
2014/09/25 Python
python得到windows自启动列表的方法
2018/10/14 Python
Python实现Dijkstra算法
2018/10/17 Python
python将图片转base64,实现前端显示
2020/01/09 Python
Python加速程序运行的方法
2020/07/29 Python
全面总结使用CSS实现水平垂直居中效果的方法
2016/03/10 HTML / CSS
让IE6支持css3,让 IE7、IE8 都支持CSS3
2011/10/09 HTML / CSS
Belle Maison倍美丛官网:日本千趣会旗下邮购网站
2016/07/22 全球购物
Foot Locker英国官网:美国知名运动产品零售商
2019/02/21 全球购物
Lululemon加拿大官网:加拿大知名体育服装零售商
2019/04/12 全球购物
华为python面试题
2016/05/03 面试题
车队司机自我鉴定
2014/03/02 职场文书
民族团结好少年事迹材料
2014/08/19 职场文书
出纳试用期自我评价
2015/03/10 职场文书
五星级酒店前台接待岗位职责
2015/04/02 职场文书
电脑无法安装Windows 11怎么办?无法安装Win11的解决方法
2021/11/21 数码科技
pandas中关于apply+lambda的应用
2022/02/28 Python