數字三角形

2021-10-04 19:03:04 字數 1531 閱讀 9233

題目描述

73 8

8 1 0

2 7 4 4

4 5 2 6 5

輸入

你的程式要能接受標準輸入。第一行包含乙個整數t,表示總的測試次數。

對於每一種情況:第一行包含乙個整數n,其中1 < n < 100,表示三角形的行數。

接下來的n行輸入表示三角形的每一行的元素ai,j,其中0 < ai,j < 100。

輸出

輸出每次測試的最大值並且佔一行。

樣例輸入

157

3881

0274

4452

65

樣例輸出

30
題目思路

這是一道經典的動態規劃的題目,以自底向上的方式進行遞推的計算。利用空間換時間,對於每一步,記錄當前計算的值,在求解子問題的過程中,避免了大量的重複計算。

a[i]

[j]=

max(a[i+1]

[j+1

],a[i+1]

[j])

+a[i]

[j]

當前子問題中,我們尋找下一層兩個較大的值,並更新自己當前值

**

#include

using

namespace std;

const

int maxn=

1005

;int a[maxn]

[maxn]

;int

max(

int a,

int b)

intmain()

return0;

}

分析

陣列的維護過程

初始狀態:

73 8

8 1 0

2 7 4 4

4 5 2 6 5

遞推一:

73 8

8 1 0

7 12 10 10

4 5 2 6 5

遞推二:

73 8

20 13 10

7 12 10 10

4 5 2 6 5

遞推三:

723 21

20 13 10

7 12 10 10

4 5 2 6 5

遞推四:

3023 21

20 13 10

7 12 10 10

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 ...