杭電2084數塔(逆序)

2021-07-10 14:34:54 字數 2170 閱讀 6915

杭電2084數塔(逆序)

problem description

在講述dp演算法的時候,乙個經典的例子就是數塔問題,它是這樣描述的:

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

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

input

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

output

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

input1

5 7

3 8

8 1 0

2 7 4 4

4 5 2 6 5

sample output

30

1;題目介紹說是dp題目;說實話我可還沒有了解過dp的,因此我做出這題也是想了很久的,最開始是準備從頂端塔開始比較相加的;但後來發現不行,題目意思是要求從頂層走到底層,若每一步只能走到相鄰的結點,則經過的結點的數字之和最大是多少;相鄰的結點,我們再仔細看看,會發現相鄰的結點就是下層塔的正下方和右側二個才是相鄰的因此如果我們從上至下就會行不通的;不知道解釋明白沒;

用事列說一遍吧;

1——————————7

2———————8>3則會選擇8而不會選擇3;

3————————8的相鄰點最為1則為9;但剛才的3相鄰點最大    

確實8;因此可以說明剛才選8的那條分支可能不是最大的情況因此從頂端開始是行不通的;

2;因此我們從低端開始往上面推;往上加上去,最值就是m[0][0]了;

這下可以直接上**了吧;

#include

int main

()

;
scanf("%d",&num);
while

(num--)

}

for

(i=tc-2;i>=0;i--)

elseta[i][j] =ta[i+1][j+1]+ta[i][j];
}

}

/*

for(i = 0; i < tc; i++)

}

*/

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

return0;
}

杭電OJ 2084 數塔 動態規劃

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

杭電100題 DP 動態規劃 2084 數塔

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

HDOJ2084數塔問題

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