初識動態規劃,實踐求解數塔問題

2021-10-17 09:48:00 字數 719 閱讀 3624

#include

#include

#include

#include

#include

#include

#define maxn 1000

using

namespace std;

int n,m;

//動態規劃,重疊子問題,數塔,遞推寫法,開乙個dp陣列儲存子問題的答案,動態規劃兩個關鍵重疊子問題,最優子結構,注意和分治和貪心的區別

vector<

int>tower[maxn]

;vector<

int>dp[maxn]

;void

solve()

//遞推寫法}}

intdp

(int i,

int j)

//遞迴寫法,速度較慢且未將子問題結果儲存在dp中

return

max(

dp(i+

1,j),dp

(i+1

,j+1))

+tower[i]

[j];

//結果未儲存

}int

main()

}for

(int i=

0;i)//solve();

printf

("%d\n",dp

(0,0

));}

動態規劃 數塔問題求解 C 實現

file name digital tower.cpp function 動態規劃 數塔問題求解 c 實現 created on 2016年6月17日 author beijiwei qq.com 任何單位和個人不經本人允許不得用於商業用途 912 15 10 6 8 2 18 9 5 19 7 1...

動態規劃 數塔問題

有如下所示的數塔,要求從頂層走到底層,若每一步只能走到相鄰的結點,則經過的結點的數字之和最大是多少?從頂點出發時到底向左走還是向右走應 取決於是從左走能取到最大值還是從右走能取到最大值,只要左右兩道路徑上的最大值求出來了才能作出決策。同樣的道理下一層的走向又要取決於再下一層上的最大值是否已經求出才能...

動態規劃 數塔問題

從上到下出發,每次只能走到下面相鄰的節點,尋找一條路徑使經過的數值和最大。12 15 10 6 8 2 18 9 5 19 7 10 4 15 動態規劃思路 假設到第i行第j個元素為止的最優解為f i j 則f i j 實際上至於f i 1 j 和f i 1 j 1 有關。include inclu...