题目描述:
蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。
样例输入 5 样例输出 1 3 6 10 15 2 5 9 14 4 8 13 7 12
11
输入描述:
输入正整数N(N不大于100)
输出描述:
输出一个N行的蛇形矩阵。
思路一:
1
2 3
4 5 6
7 8 9 10
11 12 13 14 15
共n行
第i行的第一个数:1 + 2 + ... + (i- 1) + 1 = (i * i - i) / 2 + 1;
第i行的最后一个数:1 + 2 + ... + (i - 1) + i= (i * i + i) / 2 ;
i = 1~5 : 输出 (i * i + i) / 2
i = 2~5 : 输出 (i * i + i) / 2 - 1
i = 3~5 : 输出 (i * i + i) / 2 - 2
i = 4~5 : 输出 (i * i + i) / 2 - 3
i = 5 : 输出 (i * i + i) / 2 - 4
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while (scanner.hasNext()) { int n = scanner.nextInt(); int i = 1; while (i <= n) { int j = i; for (; j <= n - 1; j++) { System.out.print((j * j + j) / 2 - (i - 1) + " "); } System.out.println((j * j + j) / 2 - (i - 1)); i++; } } } }思路二:
根据规律求解,如示例:行间隔分别为: 2,3,4,5 3,4,5 4,5 5 第一列间隔分别为:1,2,3,4
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while (scanner.hasNext()) { int n = scanner.nextInt(); int first = 1; for (int i = 1; i <= n; i++) { System.out.print(first); int tmp = first; for (int j = i + 1; j <= n; j++) { tmp += j; System.out.print(" " + tmp); } System.out.println(); first += i; } } } }