題目位址
關於數字三角形,很容易找到其中的狀態方程。參考《競賽入門》中第九章動態規劃第一節。
狀態方程為的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的核心思想就是找出各階段各子問題之間的關係,然後利用各階段的關係逐個求解。其中比較經典的題目就是數塔和最長有序子串行的求解。數塔 題目 有形如下面所示的數塔,從頂部出發,在每一節點可以選擇向左走或是向右走,一直走到底層,需求...