HDOJ2084數塔(簡單動態規劃)

2021-09-11 05:41:39 字數 941 閱讀 8908

題目位址

關於數字三角形,很容易找到其中的狀態方程。參考《競賽入門》中第九章動態規劃第一節。

狀態方程為的d[i][j] = max(d[i+1][j], d[i + 1][j + 1];用乙個二維陣列來儲存數字三角形,就可以了。

貼上源**,這道題只是初始看了動態規劃

#include

#include

#include

using namespace std;

//#define local

int d[

101]

[101];

int a[

101]

[101];

int n;

intdp

(int x,

int y)

return d[x]

[y]= a[x]

[y]+

(x == n?0:

max(

dp(x +

1, y),dp

(x +

1, y +1)

));}

intmain()

} for(int j = 1; j <= n; j++)

for(int i = n - 1; i >= 1; i--)

} printf("%d\n", d[1][1]);

} */

int c;

scanf

("%d"

,&c)

;while

(c--)}

for(

int j =

1; j <= n; j++)dp

(1,1

);printf

("%d\n"

, d[1]

[1])

;}return0;

}

HDOJ2084數塔問題

problem description在講述dp演算法的時候,乙個經典的例子就是數塔問題,它是這樣描述的 o o 圖貌似沒有複製上,不想傳了,一搜hdoj2084就都知道了 有如下所示的數塔,要求從頂層走到底層,若每一步只能走到相鄰的結點,則經過的結點的數字之和最大是多少?已經告訴你了,這是個dp的...

HDOJ2084數塔問題

數塔問題 題目要求從頂層走到底層,若每一步只能走到相鄰的結點,求經過的結點的數字之和最大值。很經典的dp,可以這樣考慮,要求從塔頂到塔底最大路徑之和,計算時可以考慮自底向上,走最後一步所選的數一定是塔底的某個值,向上退一層,對於倒數第二步,所走的是塔底往上一層較大的那個數,此時可以將倒數第二步所走的...

動態規劃 數塔問題(HDOJ 2084)

動態規劃 dynamic programming 網上大家都簡稱為dp。dp的核心思想就是找出各階段各子問題之間的關係,然後利用各階段的關係逐個求解。其中比較經典的題目就是數塔和最長有序子串行的求解。數塔 題目 有形如下面所示的數塔,從頂部出發,在每一節點可以選擇向左走或是向右走,一直走到底層,需求...