蛇形矩阵

xiaoxiao2021-02-28  34

题目描述:

蛇形矩阵是由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; } } } }
转载请注明原文地址: https://www.6miu.com/read-2612740.html

最新回复(0)