Java實現輸出數字三角形實例代碼

題目:

給定一個如下圖所示的數字三角形,從頂部出發,在每一結點可以選擇移動至其左下方的結點或移動至其右下方的結點,一直走到底層,要求找出一條路徑,使路徑上的數字的和最大。

        7
      3   8
    8   1   0
  2   7   4   4
4   5   2   6   5

輸入格式

第一行包含整數 nn,表示數字三角形的層數。

接下來 nn 行,每行包含若幹整數,其中第 ii 行表示數字三角形第 ii 層包含的整數。

輸出格式

輸出一個整數,表示最大的路徑數字和。

數據范圍

1≤n≤5001≤n≤500,
−10000≤三角形中的整數≤10000−10000≤三角形中的整數≤10000

輸入樣例:

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) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int nums[][] = new int[n][];
        for(int i = 0;i<n;i++){
            nums[i] = new int[i+1];
            for(int j = 0;j<i+1;j++){
                nums[i][j] = sc.nextInt();
 
            }
        }
        for(int i =n-1 ;i>0;i--){
            for(int j = 0;j<nums[i].length-1;j++){
                nums[i-1][j] += Math.max(nums[i][j],nums[i][j+1]);
            }
        }
        System.out.println(nums[0][0]);
 
 
 
    }
 
}

總結

到此這篇關於Java實現輸出三角形實例代碼的文章就介紹到這瞭,更多相關Java輸出三角形內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: