2016藍橋杯演算法訓練——數字三角形
阿新 • • 發佈:2019-02-13
數字三角形
問題描述
(圖3.1-1)示出了一個數字三角形。 請編一個程式計算從頂至底的某處的一條路
徑,使該路徑所經過的數字的總和最大。
●每一步可沿左斜線向下或右斜線向下走;
●1<三角形行數≤100;
●三角形中的數字為整數0,1,…99;
.
(圖3.1-1) 輸入格式 檔案中首先讀到的是三角形的行數。
接下來描述整個三角形 輸出格式 最大總和(整數) 樣例輸入 5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5 樣例輸出 30
程式碼:
徑,使該路徑所經過的數字的總和最大。
●每一步可沿左斜線向下或右斜線向下走;
●1<三角形行數≤100;
●三角形中的數字為整數0,1,…99;
.
(圖3.1-1) 輸入格式 檔案中首先讀到的是三角形的行數。
接下來描述整個三角形 輸出格式 最大總和(整數) 樣例輸入 5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5 樣例輸出 30
程式碼:
import java.util.Scanner; public class Main { public static void main(String[] args) throws Exception { Scanner in = new Scanner(System.in); int n = in.nextInt(); int[][] a = new int[n][n]; for(int i=0;i<n;i++){ for(int j=0;j<=i;j++){ a[i][j] = in.nextInt(); } } for(int i=n-1;i>=1;i--){ for(int j=0;j<i;j++){ a[i-1][j]+=Math.max(a[i][j], a[i][j+1]);//將i行最大的數加到i-1行所對應的數上,這樣,等加到第一個數時,就是最大路徑上數的和 } } System.out.println(a[0][0]); } }