計算機演算法設計與分析 數字三角形

2021-09-29 11:52:32 字數 639 閱讀 6510

3數字三角形問題::

給定乙個有n行數字組成的數字三角形,如下圖所示:

73  8

8 1 0

2 7  4  4

4  5  2  6  5

設計演算法,計算從三角形的頂端至底的一條路徑,使該路徑經過的數字總和最大。

根據題意,將數字三角形抽象為二維陣列,不難發現,可以從下而上進行處理,即初始化dp陣列時以最下面一行資料為基準,向上倒著找路徑,其中每個點的上一步只能是正上方的點或者上面一行左邊的點,根據這一點,不難發現狀態轉移方程:dp[i][j]=max(dp[i+1][j],dp[i+1][j+1])+num[i][j],其中dp陣列表示從第i行第j列表示的點到最下方的最長距離,最後輸出dp[1][1]即可。

#includeusing namespace std;

int n;

int num[1005][1005];

int dp[1005][1005];

int main()

} printf("%d\n",dp[1][1]);

} return 0;

} /*57

3 88 1 0

2 7 4 4

4 5 2 6 5

*/

數字三角形

題目描述 示出了乙個數字三角形。請編乙個程式計算從頂至底的某處的一條路 徑,使該路徑所經過的數字的總和最大。每一步可沿左斜線向下或右斜線向下走 1 三角形行數 25 三角形中的數字為整數 1000 輸入第一行為n,表示有n行 後面n行表示三角形每條路的路徑權 輸出路徑所經過的數字的總和最大的答案 樣...

數字三角形

description 有如下所示的數塔,要求從頂層走到底層,若每一步只能走到相鄰的結點,則經過的結點的數字之和最大是多少?input 輸入資料首先包括乙個整數c,表示測試例項的個數,每個測試例項的第一行是乙個整數n 1 n 100 表示數塔的高度,接下來用n行數字表示數塔,其中第i行有個i個整數,...

數字三角形

3 8 8 1 0 2 7 4 4 4 5 2 6 5 上圖給出了乙個數字三角形。從三角形的頂部到底部有很多條不同的路徑。對於每條路徑,把路徑上面的數加起來可以得到乙個和,和最大的路徑稱為最佳路徑。你的任務就是求出最佳路徑上的數字之和。input 1 5 7 3 8 8 1 0 2 7 4 4 4 ...