第二週python窮舉法遞迴

2021-10-03 10:43:05 字數 1244 閱讀 7446

例題1 百錢百雞問題

我國古代數學家張丘建在《算經》一書中提出的數學問題:雞翁一值錢五,雞母一值錢三,雞雛三值錢一。百錢買百雞,問雞翁、雞母、雞雛各幾何?

"""

演算法分析:通過2個迴圈來窮舉可以優化迴圈次數,利用一共100隻雞的總數可以優化**

@author: songdaiyu

"""# cock表示公雞 hen表示母雞 chicken表示小雞

# 由於公雞5錢,範圍最大20

for cock in range(0,20):

# 由於母雞3錢,範圍最大33

for hen in range(0,33):

# 由於一共100隻雞,小雞數量等於100-公雞數-母雞數

chicken = 100 - cock - hen

# 利用**為100列等式

if 5 * cock + 3 * hen + chicken/3 == 100:

print("公雞買了%d只,母雞買了%d只,小雞買了%d只" %(cock, hen ,chicken))

例題2 猴子爬山問題

乙隻頑猴在一座有50級台階的小山上爬山跳躍。上山時需從山腳至山頂往上跳50級台階,一步可跳1級,或跳2級,或跳3級,求上山有多少種不同的跳法?

"""

演算法分析:

猴子爬山問題規律: n 表示台階,method代表方法

n=1 method=1

n=2 method=2

n=3 method=4

n>3 method=method(n-1)+method(n-2)+method(n-3)

@author: songdaiyu

"""# 2.遞迴執行時間較長,空間利用率高;遞推浪費空間較多,執行時間快

# 遞推法

# methods陣列存放方法數量

methods=

# 進行迴圈,由於只有20級樓梯,所以迴圈次數不用太多

for i in range(1,21):

# 根據規律遞推,放入陣列

if i==1:

elif i == 2:

elif i == 3:

else:

# 通過迴圈得到20級台階方法數量

for i in range(1,21):

if i==20:

print('台階數為20時,方法數為 %d' %(methods[i-1]))

第二週專案4 窮舉法解決組合問題

2015,煙台大學計算機與控制工程學院 all rightreserved.檔名稱 test.cpp 作 者 張明宇 完成日期 2016年3月22日 問題及 領會窮舉法 意為 窮舉式列舉 也稱列舉 的思想,然後自行選題進行解決,掌握這種程式設計的一般方法。1 百錢白雞問題 中國古代數學家張丘建在他的...

窮舉法破解密碼 遞迴 多層for迴圈

題目要求 1.生成乙個長度是3的隨機字串,把這個字串作為當做密碼 2.使用窮舉法生成長度是3個字串,匹配上述生成的密碼 要求 分別使用多層for迴圈 和 遞迴解決上述問題 1 首先用遞迴來實現 public static void guessnum char c,int index,string p...

第二次上機實踐專案 專案4 窮舉法

問題及 檔名稱 個人所得稅計算器 完成日期 2016.3.12 問題描述 中國古代數學家張丘在他的 算經 中提出了註明的百禽買白雞的問題,雞翁一值錢五,雞母一,之前三,雞雛三,值錢一,問翁,母,雛各幾何?輸入描述 無 程式輸出 輸出雞翁雞母,雞雛的個數 知識點總結 這是一種求解不定方程的題目,會牽扯...