數塔問題
題目要求從頂層走到底層,若每一步只能走到相鄰的結點,求經過的結點的數字之和最大值。
很經典的dp,可以這樣考慮,要求從塔頂到塔底最大路徑之和,計算時可以考慮自底向上,走最後一步所選的數一定是塔底的某個值,向上退一層,對於倒數第二步,所走的是塔底往上一層較大的那個數,此時可以將倒數第二步所走的數與塔底較大的值加起來,記憶儲存,
依次往上推,一直推到塔頂,此時所計算出的結果一定是最大的。
下面這張圖很清晰地反映出了解題的思想。
此時可以用方程表示為
dp[i][j]+=max
ac**如下:
#includeusing namespace std;
int main()
} for(i=n-1;i>=1;i--)
}cout<
HDOJ2084數塔問題
problem description在講述dp演算法的時候,乙個經典的例子就是數塔問題,它是這樣描述的 o o 圖貌似沒有複製上,不想傳了,一搜hdoj2084就都知道了 有如下所示的數塔,要求從頂層走到底層,若每一步只能走到相鄰的結點,則經過的結點的數字之和最大是多少?已經告訴你了,這是個dp的...
動態規劃 數塔問題(HDOJ 2084)
動態規劃 dynamic programming 網上大家都簡稱為dp。dp的核心思想就是找出各階段各子問題之間的關係,然後利用各階段的關係逐個求解。其中比較經典的題目就是數塔和最長有序子串行的求解。數塔 題目 有形如下面所示的數塔,從頂部出發,在每一節點可以選擇向左走或是向右走,一直走到底層,需求...
HDOJ 2084 數塔 解題報告
要求從頂層走到底層,若每一步只能走到相鄰的結點,則經過的結點的數字之和最大是多少?初始條件其實就是最底層的數值,遞推關係是某一節點數值 自身數值 左右子節點數值的較大值。看到有的人的 是用二維陣列,角標1為行號角標2為該行第幾個元素,這樣確實 更好寫,不過浪費了一倍的記憶體,我是用一位陣列寫的,每行...