C 數字三角形問題與dp演算法

2022-09-26 10:00:12 字數 629 閱讀 3082

題目:數字三角形

輸入:第一行值n,代表n行數值;後面的ipgfjn行資料代表每一行的數字。

輸出:經過數字的最大和。

例:輸入:

3 24 10 1

4 3 2 20

輸出:分析:這也是乙個典型的貪心演算法無法解決的問題,同樣可以用動態規劃(dp演算法)來解決。把邊界數字首先初始化到結果矩陣中,再根據狀態方程完成結果矩陣的遍歷。需要注意的就是陣列不是矩形而是三角形,與傳統的狀態方程相比需要做點改進。

陣列編號:

狀態方程:p[ i ][ j ]=max

**如下:

#include

using namespace std;

int main()

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

}for (i = 1; i < n; i++)

for (i = 1; i < n; i++)

for (i = 2; i < n; i++)

}for (i = 0; i < n; i++)

cout << endl;

}}結果如下圖:

所以最下層的數字和最大值是24.

總結本文標題: c++數字三角形問題與dp演算法

本文位址:

dp 數字三角形問題

數字三角形問題 time limit 1000 ms memory limit 65536 kib problem description 給定乙個由n行數字組成的數字三角形如下圖所示。試設計乙個演算法,計算出從三角形的頂至底的一條路徑,使該路徑經過的數字總和最大。對於給定的由n行數字組成的數字三角...

數字三角形 DP

數字三角形 時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 問題描述 小hi和小ho在經歷了螃蟹先生的任務之後被獎勵了一次出國旅遊的機會,於是他們來到了大洋彼岸的美國。美國人民的生活非常有意思,經常會有形形色色 奇奇怪怪的活動舉辦,這不,小hi和小ho剛剛下飛機,就趕上了當...

(dp)數字三角形

數字三角形問題。有乙個由非負整數組成的三角形,第一行只有乙個數,除了最下行 之外每個數的左下方和右下方各有乙個數 從第一行的數開始,每次可以往左下或右下走一格,直到走到最下行,把沿途經過的數 全部加起來。如何走才能使得這個和盡量大?具體實現 中的d我們用maxsum表示 最初的位置我們用d存 1.把...