本文实例分析了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兔子毒药问题实例分析相关推荐

  1. python斐波那契数列前20项_Python每日一练之实现斐波那契数列

    概述 今天主要分享下怎么用Python实现斐波那契数列,大家有空可以玩一下~ 需求 用Python脚本实现斐波那契数列. 思路 斐波那契数列,也称兔子数列,是指1,1,2,3,5,8,13,21,34 ...

  2. 递归函数输出斐波那契数列-黄金分割数列-兔子数列(python)

    递归函数输出斐波那契数列-黄金分割数列-兔子数列(python) 斐波那契数列介绍 数学家莱昂纳 多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为"兔 ...

  3. python斐波那契数列前20项_兔子繁殖问题带来的智商碾压:斐波那契数列趣谈

    本文来自公众号:超级数学建模 微信号 :supermodeling 原文标题:斐波那契数列趣谈 via 善科 by BB 一般认为斐波那契数列的提出是基于兔子的繁殖问题:如果一开始有一对兔子,它们每月 ...

  4. python斐波那契递归_Python递归斐波那契示例

    python斐波那契递归 Good day, learners! In this tutorial we are going to learn about Python Recursion and u ...

  5. python斐波那契数列for循环_Python编程题、for循环和列表推导式的用法题(阿凡提与国王比赛下棋、 斐波那契数列等)...

    # -*- coding: utf-8 -*- """ Spyder Editor This is a temporary script file. "&quo ...

  6. python程序题斐波那契数列通项公式,Python斐波那契数列应用,编程练习题实例六...

    python斐波那契数列,本文是关于Python编程练习题和答案实例六,斐波那契数列应用的示例.引用百度关于斐波那契数列的介绍,大家先简单来的了解下,什么是斐波那契数列? 斐波那契数列(Fibonac ...

  7. python斐波那契数列前20项_Python初学者笔记:打印出斐波那契数列的前10项

    问题:斐波那契数列(意大利语: Successione di Fibonacci),又称黄金分割数列.费波那西数列.费波拿契数.费氏数列,指的是这样一个数列:0.1.1.2.3.5.8.13.21.- ...

  8. python做斐波那契数列通项公式_python实现斐波那契数列

    斐波那契数列:第0项是0,第1项是第一个1.这个数列从第3项开始,每一项都等于前两项之和.如下: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,3 ...

  9. python生成斐波那契数列通项公式_Python生成器实现斐波那契数列

    比如,斐波那契数列:1,1,2,3,5,8,13,21,34.... 用列表生成式写不出来,但是我们可以用函数把它打印出来: def fib(number): n, a, b = 0, 0, 1 wh ...

  10. python斐波那契前20递归_算法python实现经典递归问题(汉诺塔, 斐波那契数列,阶乘)...

    经典递归 汉诺塔问题 背景故事 传说印度某间寺院有三根柱子,上串64个金盘.寺院里的僧侣依照一个古老的预言,以上述规则移动这些盘子:预言说当这些盘子移动完毕,世界就会灭亡.这个传说叫做梵天寺之塔问题( ...

最新文章

  1. 一文读懂GoogLeNet神经网络 | CSDN博文精选
  2. filebeat.yml配置和logstash.conf
  3. php mysql 非扫描,PHP的中使用非缓冲模式查询数据库的方法
  4. ArrayList笔记
  5. Grpc Proto To Nuget Package 插件使用说明
  6. P4146 序列终结者 平衡树 + lazy维护
  7. 紫色UI趣味测试微信小程序源码下载包含多种评测
  8. 算法 - 差分进化(DE)算法
  9. 计算机如何共享桌面,怎么共享电脑屏幕?
  10. epub格式电子书编辑器
  11. 粒子群算法 java_粒子群算法解决TSP问题
  12. android 实现男女按钮选择
  13. python xlwt追加_python excel写入及追加写入
  14. DRM 驱动程序开发(VKMS)
  15. RHCE-ansible第三次实验,通过ansible自动化部署web服务
  16. peer channel create解析
  17. AM335x Linux调试1--MLO中打印寄存器值
  18. SIM7600CE GNSS应用指南
  19. 六轴机器人直角坐标系建立_知识篇-六轴机器人坐标
  20. 【日常实用】git的简单使用

热门文章

  1. postionfixed固定_详解如何解决position:fixed固定定位偏移问题
  2. project euler 19: Counting Sundays
  3. [译]A Gentle Introduction to Functional Javascript part 4
  4. Qt通过setProperty来达到设置控件的不同样式表
  5. ECMA5forEach
  6. 上海辉度 WTH207 COM口
  7. ie的html缓存问题,解决IE下Ajax请求无效,IE请求缓存问题
  8. siri早上好捷径分享_如何使Siri更好地了解您
  9. Jmeter 证书导入
  10. Jmeter请求授权接口的两种方法