蛇形矩陣

題目描述

題目說明
    蛇形矩陣是由1開始的天然數依次排列成的一個矩陣上三角形。
樣例輸入
    5
樣例輸出
    1 3 6 10 15
    2 5 9 14
    4 8 13
    7 12
    11

輸入描述

輸入正整數N(N不大於100)

輸出描述

輸出一個N行的蛇形矩陣。

輸入例子

4

輸出例子

1 3 6 10
2 5 9
4 8
7

算法實現

import java.util.Scanner;

/**
 * Declaration: All Rights Reserved !!!
 */
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
//        Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
        while (scanner.hasNext()) {
            int n = scanner.nextInt();
            System.out.print(serpentineMatrix(n));
        }

        scanner.close();
    }

    /**
     * 蛇形矩陣
     *
     * @param n 矩陣行數
     * @return 矩陣輸出結果
     */
    private static String serpentineMatrix(int n) {

        StringBuilder builder = new StringBuilder();


        for (int i = 1; i <= n; i++) {
            // 每一行的第一個元素是(i-1)*i/2+1
            // 每一行的元素個數是n-i
            // 初始間隔是i+1,以後每個間隔比上一個間隔多1,以後的每一個元素是前一個元素加上間隔
            for (int j = 1, start = (i - 1) * i / 2 + 1, step = i + 1; j <= n - i + 1; j++, start += step, step++) {
                builder.append(start).append(' ');
            }

            // 設置換行符
            builder.setCharAt(builder.length()-1, '\n');

        }


        return builder.toString();
    }
}
相關文章
相關標籤/搜索