HDOJ2084數塔問題

2021-06-05 15:07:42 字數 777 閱讀 2316

problem description在講述dp演算法的時候,乙個經典的例子就是數塔問題,它是這樣描述的:(o(╯□╰)o……圖貌似沒有複製上,不想傳了,一搜hdoj2084就都知道了)

有如下所示的數塔,要求從頂層走到底層,若每一步只能走到相鄰的結點,則經過的結點的數字之和最大是多少?

已經告訴你了,這是個dp的題目,你能ac嗎?

input

輸入資料首先包括乙個整數c,表示測試例項的個數,每個測試例項的第一行是乙個整數n(1<= n <= 100),表示數塔的高度,接下來用n行數字表示數塔,其中第i行有個i個整數,且所有的整數均在區間[0,99]內。

output

對於每個測試例項,輸出可能得到的最大和,每個例項的輸出佔一行。

sample input15

73 8

8 1 0

2 7 4 4

4 5 2 6 5

sample output

30思路:倒著從最下面一行推,總把底下兩行的加起來看,保留較大的數。倒著的好處,不用最後再找最後一行的最大值輸出。

#include#includeint main()

}else

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

} system("pause");

return 0;

}

HDOJ2084數塔問題

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

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

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

HDOJ 2084 數塔 解題報告

要求從頂層走到底層,若每一步只能走到相鄰的結點,則經過的結點的數字之和最大是多少?初始條件其實就是最底層的數值,遞推關係是某一節點數值 自身數值 左右子節點數值的較大值。看到有的人的 是用二維陣列,角標1為行號角標2為該行第幾個元素,這樣確實 更好寫,不過浪費了一倍的記憶體,我是用一位陣列寫的,每行...