Python兔子毒藥問題例項分析

2022-10-04 23:30:36 字數 1510 閱讀 6791

問題大致是這樣的:1000瓶無色無味的液體,其中一瓶為毒藥,其它皆為清水,毒藥只取一滴與清水混合為一瓶也可以毒死兔子。現在有10只兔子,當兔子喝下毒藥兩個小時後死去,請設計一種方案,能夠在24小時內找到這瓶毒藥。

................2分鐘後

前面的問題你一定想清楚了,那麼略改動一下:1000瓶無色無味的液體,其中一瓶為毒藥,其它皆為清水,毒藥只取一滴與清水混合為一瓶也可以毒死兔子。現在有10只兔子,當兔子喝下毒藥20個小時後死去,請設計一種方案,能夠在24小時內找到這瓶毒藥ivepwgt。

................2分鐘後

有多種方法,比如我每隔5分鐘給兔子喝一次100瓶液體混合在一起的東西,根據兔子死去的先後順序,就可以判斷是那一瓶了。

有沒有更好的辦法呢,我這裡僅僅提供一種時間最優的方法,也就是在20個小時找到這瓶毒藥。當然也可以有死的兔子最少,在死去兔子和時間找到乙個最佳折中點的優化問題。

方法如www.cppcns.com下:

給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():

www.cppcns.com """

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兔子毒藥問題例項分析

本文位址: /jiaoben/python/120441.html

python學習 兔子問題

問題 這是乙個有趣的古典數學問題,著名義大利數學家fibonacci曾提出乙個問題 有一對小兔子,從出生後第3個月起每個月都生一對兔子。小兔子長到第3個月後每個月又生一對兔子。按此規律,假設沒有兔子死亡,第乙個月有一對剛出生的小兔子,問第n個月有多少對兔子?思路 這個月的兔子只有兩個 乙個 是上個月...

5 29 兔子繁衍問題 15分

一對兔子,從出生後第3個月起每個月都生一對兔子。小兔子長到第3個月後每個月又生一對兔子。假如兔子都不死,請問第1個月出生的一對兔子,至少需要繁衍到第幾個月時兔子總數才可以達到nn 對?輸入在一行中給出乙個不超過10000的正整數nn 在一行中輸出兔子總數達到nn 最少需要的月數。30 9 解析 斐波...

7 27 兔子繁衍問題 (15 分)

7 27 兔子繁衍問題 15 分 一對兔子,從出生後第3個月起每個月都生一對兔子。小兔子長到第3個月後每個月又生一對兔子。假如兔子都不死,請問第1個月出生的一對兔子,至少需要繁衍到第幾個月時兔子總數才可以達到n對?輸入在一行中給出乙個不超過10000的正整數n。在一行中輸出兔子總數達到n最少需要的月...