遞迴 遞推 動態規劃

2021-09-29 12:19:49 字數 978 閱讀 3885

問題一:已知f(1) = 1 , f(2) = 1 , 且f(n) = f(n-1) + f(n-2),則f(n)等於多少?

解法一:遞迴(找到遞迴關係和遞迴出口)

#include using namespace std;

int n;

int sum(int i)

}int main()

解法二:遞推

#include using namespace std;

int n;

int a[100];

int main()

問題二:數字三角形,尋找一條從頂部到底邊的路徑,使得路徑上所經過的數字之和最大。

解法一:遞迴

#include #include using namespace std;

int n;

int d[10][10];

int summax(int i,int j)

}int main()

解法二:遞推型動態規劃

#include #include using namespace std;

int n;

int d[10][10];

int max[10];

int main()

特點:最優子結構,無後效性

空間複雜度:支援計算所必需儲存的狀態最多有多少

時間複雜度:初始狀態到達最終狀態中間需要多少步

參考文章:八年c++老司機教你徹底學會動態規劃-入門篇 

遞推與遞迴 

什麼是動態規劃(dynamic programming)?動態規劃的意義是什麼?

遞迴和遞推 動態規劃演算法

借鑑 動態規劃演算法 一 演算法思想 將待求解的問題分解成若干個子問題,並儲存子問題的解而避免計算重複的子問題,並由子問題的解得到原問題的解。l動態規劃演算法通常用於求解具有某種最優性質的問題。l動態規劃演算法的基本要素 最優子結構性質和重疊子問題。1 l最優子結構性質 問題的最優解包含著它的子問題...

藍橋杯 演算法訓練 Cowboys 遞推 動態規劃

問題描述 乙個間不容髮的時刻 n個牛仔站立於乙個環中,並且每個牛仔都用左 指著他旁邊的人!每個牛仔指著他順時針或者逆時針方向上的相鄰的人。正如很多西部片那樣,在這一刻,繩命是入刺的不可惜 對峙的場景每秒都在變化。每秒鐘牛仔們都會分析局勢,當一對相鄰的牛仔發現他們正在互指的時候,就會轉過身。一秒內每對...

遞迴 遞推 貪心 搜尋和動態規劃

遞迴 函式呼叫自身,直到達到基線條件之後,再一層層的回歸到最初的問題。這是一種自頂向下的方法。動態規劃通常是用遞推 自底向上 來實現的,但是使用備忘錄遞迴 自頂向下 也能夠實現動態規劃。例如,動態規劃 從入門到放棄 結合這篇部落格的例子來理解,詳解動態規劃 鄒博講動態規劃 已知問題規模為n的前提a,...