動態規劃演算法求解上梯子問題

2021-04-18 05:17:12 字數 714 閱讀 6048

今天開始學習有關動態規劃的知識.先從這道題開始吧!

有11個階梯,可以上一次上乙個,也可以一次上兩個,有幾種方法可以上完?

演算法一:這是本作者自己想出來的演算法,很簡單,就是利用遞推的思想吧!

#include

using namespace std;

int main(int argc, char* argv)

cout<

演算法二:(引用)下面的演算法,採用的是動態規劃的原理,動態規則是上世紀80年被牛人們發現的;

動態規則的思想,就是不重複解反覆的子程式過程.對於這道上梯子的題目,意思就是一來就是0梯,

所以去0梯的方法數為1;然後從0梯可以去第1梯,那麼到第一梯的方法數,應該加上到0梯的方法數;

從0梯可以去第2梯

, 那麼第2梯的方法數,應該加上到0梯擁有的方法數;再往下看,從第1梯,又可以通過不同的方式,到第2梯和第3梯,那麼2,3梯的方法,又應該加上到第一梯擁有的方法,依次類推,動態就考慮到只計算一次. 

#include

using namespace std;

int main(int argc, char* argv)

num[0] = 1;

for(i=0; i<=11; i++)

cout<

動態規劃演算法求解硬幣找零問題

1.問題描述 現存在一堆面值為 v1 v2 v3 個單位的硬幣,問最少需要多少個硬幣才能找出總值為 t 個單位的零錢?假設這一堆面值分別為 1 2 5 21 25 元,需要找出總值 t 為 63 元的零錢。2.分析 動態規劃的基本思想是將待求解問題分解成若干個子問題,先求解子問題,並將這些子問題的解...

動態規劃演算法

一 動態規劃演算法原理 將待求解的問題分解成若干個相互聯絡的子問題,先求解子問題,然後從這些子問題的解得到原問題的解 對於重複出現的子問題,只在第一次遇到的時候對它進行求解,並把答案儲存起來。了不去求解相同的子問題,引入乙個陣列,把所有子問題的解存於該陣列中,這就是動態規劃所採用的基本方法。動態規劃...

動態規劃演算法

動態規劃 通過把原問題分解為相對簡單的子問題來求解複雜問題。動態規劃常常適用於有重疊子問題和最優子結構性質的問題。演算法總體思想 演算法的基本步驟 演算法的基本要素 最優子結構 重疊子問題 備忘錄方法 問題描述 子串行 公共子串行 最長公共子串行 lcs 問題 問題分析 動態規劃求解lcs問題 最長...