數字三角形

2021-09-12 10:44:26 字數 1530 閱讀 2051

問題描述

(圖3.1-1)示出了乙個數字三角形。 請編乙個程式計算從頂至底的某處的一條路

徑,使該路徑所經過的數字的總和最大。

●每一步可沿左斜線向下或右斜線向下走;

●1<三角形行數≤100;

●三角形中的數字為整數0,1,…99;

輸入格式

檔案中首先讀到的是三角形的行數

接下來描述整個三角形

輸出格式

最大總和(整數)

樣例輸入57

3 88 1 0

2 7 4 4

4 5 2 6 5

樣例輸出

30

問題分析

這道題其實就是從已有的一系列整數資料中選取若干個整數來做加法,使得和最大。

但是也有限制條件:

1.每一層只能選擇乙個

2.且選擇第n層的下一層時,只能選擇第n層的左下方或者右下方的整數

這道題一般使用陣列作為儲存輸入資料的資料結構

所以在實際儲存(邏輯上)中,資料的位置不再像下圖這樣的等腰三角形(金字塔)

而是更加像是乙個直角三角形

73 8

8 1 0

2 7 4 4

4 5 2 6 5

所以,上面的限制實際上變成了

1.每一層只能選擇乙個

2.且這一層選擇的資料為為array[i][j]時,下一層只能從array[i+1][j]和array[i+1][j+1]中選擇乙個

演算法分析

到目前為止,該題使用什麼資料結構和題意都已經清楚。那麼下一步就是設計演算法

1.開始計算前

2.從倒數第二層開始計算,即n-2

選擇第n-1層中相鄰的最大的那個整數。

獲得結果:

重複上述步驟,即可獲得最大和,且最大和儲存在array[0][0]中

c++**

#include

using namespace std;

intmain()

for(i = col -

2;i >=

0;i--)}

cout<

[0];

return0;

}

數字三角形

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