數字三角形I

2021-08-07 09:16:21 字數 1256 閱讀 1203

時間限制: 1 sec  

記憶體限制: 64 mb

考慮在下面被顯示的數字三角形。 寫乙個程式來計算從最高點開始在底部任意處結束的路徑經過數字的和的最大。每一步可以走到左下方的點也可以到達右下方的點。

在上面的樣例中,從7 到 3 到 8 到 7 到 5 的路徑產生了最大和:30

第1行:1個整數r(1<= r<=1000),表示行的數目。

接下來共r行,第i行有i個整數。所有的數均非負的且不大於100。

第1行:可以得到的最大的和。

5

73 8

8 1 0

2 7 4 4

4 5 2 6 5

30

這是一道經典也簡單的dp題。

因為要使路徑之和最大,我們可以求和。

設a陣列表示原來的數字三角形,b陣列表示求和後的數字三角形。

因為每次只能向左下或者右下移動,所以我們推出公式:

b[i][j]=max(b[i-1][j],b[i-1][j-1])+a[i][j];(b[1][1]的初值等於a[1][1])

然後用求出b[n][i……n]的最大值max,max就是解。

但是我們可以優化一下,不用b陣列:

公式簡化為:

a[i][j]=max(a[i-1][j],a[i-1][j-1]);

(b[1][1]的初值等於a[1][1])

——————————————**實現———————————————————

#include

using namespace std;

int a[1001][1001],n;

int main()

數字三角形

題目描述 示出了乙個數字三角形。請編乙個程式計算從頂至底的某處的一條路 徑,使該路徑所經過的數字的總和最大。每一步可沿左斜線向下或右斜線向下走 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 ...