DP動態規劃 遞迴迭代

2021-10-18 02:45:49 字數 497 閱讀 4208

在刷leetcode的時候,因為對dp和遞迴不是很熟,對兩者界限也很模糊。所以看了一些概念以後來寫乙個日記

這是一類問題的定義,解決這類問題的核心在於找到遞推公式

f(x)

=f(x−1

)+g(n)

得到遞推公式之後,如何計算遞推公式存在兩種方法:自頂向下和自底向上

自頂向下:能採用遞迴實現

int fibonacci(int n)

自底向上:能使用迭代實現
int array[n]=;

array[1]

=1;for

(int i =

2; i < n; i++)

array[i]

= array[i-1]

+ array[i-2]

;

例子是斐波那契。來自鏈結

我的一點認識,會在學習的過程中逐步更新和修正

動態規劃 迭代與遞迴

遞迴 好像相對高明,但其實效率而言遞迴並不是最佳方案。迭代 貌似複雜,其實效能更高效。分而治之 所謂動態規劃 就是通過遞迴,找出問題本質,並且給出乙個初步的解之後,再將其等效的轉換為迭代的形式。兩個栗子 1.斐波那契數列 青蛙跳台階 2.最長公共子串行 對序列a 0,n b 0,m lcs a,b ...

演算法之遞迴,迭代,動態規劃,分冶

遞迴 把乙個問題 a 轉換乙個或多個子問題,我們把它們的集合叫做 b a 的答案可以由 b 得到 對於一種確定的遞迴方法,從 b 的答案得到 a 的答案有且只有一種方法。迭代 與遞迴的思想一樣,只是在實現層面不一樣。動態規劃 與遞迴思想一樣,不同的是由 b 的答案得到 a 的答案可能有多種方法 可能...

遞迴 迭代 動態規劃的區別與聯絡

遞迴 程式呼叫自身,從頂部將問題分解,通過解決掉所有分解出來的小問題,來解決整個問題。迭代 利用變數的原值推算出變數的乙個新值。遞迴中一定有迭代,但是迭代中不一定有遞迴。動態規劃 通常與遞迴相反,其從底部開始解決問題。將所有小問題解決掉,進而解決的整個問題。自上而下呼叫函式本身,速度較慢,不推薦。要...