題目描述
題目說明
蛇形矩陣是由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();
}
}