數塔問題 動態規劃入門

2021-10-02 17:32:53 字數 778 閱讀 5665

輸入一組數塔,求解怎樣使總數和最大

從最底層的各位置dp值開始,不斷往上求出每一層各位置的dp值,最後就會得到dp[1][1],即為想要的答案。

遞推寫法的計算方式是自底向上,即從邊界開始,不斷向上解決問題,直到解決了目標問題;而使用遞迴寫法的計算方式是自頂向下,即從目標問題開始,將它分解成子問題的組合,直到分解至邊界為止。

《演算法筆記》p428

**:

#include

#include

#include

using

namespace std;

const

int maxn =

1000

;int f[maxn]

[maxn]

,dp[maxn]

[maxn]

;int

main()

}//邊界

for(

int j =

1;j <= n;j++

)//從第n-1層不斷往上計算出dp[i][j]

for(

int i = n-

1;i >=

1;i--)}

printf

("%d\n"

,dp[1]

[1])

;return0;

}/*55

8 312 7 16

4 10 11 6

9 5 3 9 4

*/

動態規劃入門 數塔問題

數塔問題 有如下所示的數塔,要求從頂層走到底層,若每一步只能走到相鄰的結點,則經過的結點的數字之和最大是多少?這是乙個dp問題 input輸入資料首先包括乙個整數c,表示測試例項的個數,每個測試例項的第一行是乙個整數n 1 n 100 表示數塔的高度,接下來用n行數字表示數塔,其中第i行有個i個整數...

HDU 2084 數塔問題(動態規劃入門)

description 在講述dp演算法的時候,乙個經典的例子就是數塔問題,它是這樣描述的 有如下所示的數塔,要求從頂層走到底層,若每一步只能走到相鄰的結點,則經過的結點的數字之和最大是多少?已經告訴你了,這是個dp的題目,你能ac嗎?input 輸入資料首先包括乙個整數c,表示測試例項的個數,每個...

動態規劃(入門級) 數塔

在講述dp演算法的時候,乙個經典的例子就是數塔問題,它是這樣描述的 有如下所示的數塔,要求從頂層走到底層,若每一步只能走到相鄰的結點,則經過的結點的數字之和最大是多少?已經告訴你了,這是個dp的題目,你能ac嗎?輸入資料首先包括乙個整數c,表示測試例項的個數,每個測試例項的第一行是乙個整數n 1 n...