演算法基礎 第八章 暴力遞迴

2021-09-13 04:05:30 字數 1247 閱讀 9897

-- 常見的遞迴問題

-- 幾種常見的嘗試型別

介紹遞迴和動態規劃

暴力遞迴:

1,把問題轉化為規模縮小了的同類問題的子問題

2,有明確的不需要繼續進行遞迴的條件(base case)

3,有當得到了子問題的結果之後的決策過程

4,不記錄每乙個子問題的解

動態規劃

1,從暴力遞迴中來

2,將每乙個子問題的解記錄下來,避免重複計算

3,把暴力遞迴的過程,抽象成了狀態表達

4,並且存在化簡狀態表達,使其更加簡潔的可能

1.求n!的結果

2.漢諾塔問題

列印n層漢諾塔從最左邊移動到最右邊的全部過程

3.列印乙個字串的全部子串行,包括空字串

4.列印乙個字串的全部排列

高階列印乙個字串的全部排列,要求不要出現重複的排列

5.母牛每年生乙隻母牛,新出生的母牛成長三年後也能每年生乙隻母牛,假設不會死。求n年後,母牛的數量。

f(n) = f(n-1) + f(n-3)

高階如果每只母牛只能活10年,求n年後,母牛的數量。

6.給你乙個棧,請你逆序這個棧,不能申請額外的資料結構,只能使用遞迴函式。如何實現?

7.給你乙個二維陣列,二維陣列中的每個數都是正數,要求從左上角走到右下角,每一步只能向右或者向下。沿途經過的數字要累

加起來。返回最小的路徑和。

f(1,1)重複解產生,暴力遞迴不行,

什麼暴力遞迴可以改動態規劃:重複狀態,與到達 路徑無關(可變引數固定,返回值固定)

給你乙個陣列arr,和乙個整數aim。如果可以任意選擇arr中的數字,能不能累加得到aim,返回true或者false

給定兩個陣列w和v,兩個陣列長度相等,w[i]表示第i件商品的重量,v[i]表示第i件商品的價值。再給定乙個整數bag,要求你挑選商品的重量加起來一定不能超過bag,返回滿足這個條件下,你能獲得的最大價值。

第八章 指標 第八章 指標

1 什麼是位址 include using namespace std int main 11 在堆中建立對像 我們既然可以在堆中儲存變數,那麼也就可以儲存對像,我們可以將對像儲存堆中,然後通過指標來訪問它 include using namespace std class human 14 在建構...

Python基礎 第八章

到斜槓與正斜槓 windows中,路徑書寫使用倒斜槓作為資料夾之間的分隔符,os x和linux上,則使用正斜槓作為它們的路徑分隔符。獲取當前工作目錄 os.getwd 即可獲得當前工作路徑的字串。絕對路徑和相對路徑 絕對路徑 總是從根資料夾開始,相對路徑 相對於程式的當前工作目錄。os.path模...

第八章(筆記)

能在 中進行記憶體單元的定址的暫存器只有4個,分別是bx si di bp 其中bx bp 是基址,bx對應的段位址是ds,bp對應的段位址是ss si di 是變址,單獨使用時段位址是ds,組合使用段位址是跟隨組合的基址對應的段位址 中進行記憶體單元定址彙總 si di bx bp 常量 si 常...