题解 | 蛇形矩阵
蛇形矩阵
https://www.nowcoder.com/practice/649b210ef44446e3b1cd1be6fa4cab5e
解法1:模拟,一行一行输出,先找行规律,再找列规律。
import java.util.*; public class Main { public static void main(String args[]) { Scanner scan = new Scanner(System.in); int n = scan.nextInt(); int sumj=1; int addj = 0; int addadd=1; for (int j = 0; j < n; j++) { int sum = sumj; int add = addadd; for (int i = 0; i < n-j; i++) { System.out.print(sum); if(i!=n-j-1){ System.out.print(" "); } add++; sum += add; } if(j!=n-1) System.out.println(); addj++; sumj += addj; addadd++; } } }
解法2:数字连续,矩阵下标变化规律
import java.util.*; public class Main { public static void main(String args[]) { Scanner scan = new Scanner(System.in); int n = scan.nextInt(); int[][] is = new int[n][n]; for (int i = 0, add = 0; i < n; i++, add++) { if (i == 0) { is[i][0] = 1; } else { is[i][0] = is[i - 1][0] + add; } for (int j = i - 1, k = 1; j >= 0; j--,k++) { is[j][k] = is[j + 1][k - 1] + 1; } } for (int i = 0; i < n; i++) { for (int j = 0; j < n - i; j++) { System.out.print(is[i][j] + " "); } System.out.println(); } } }
解法3:前n项和规律
import java.util.*; public class Main { public static void main(String args[]) { Scanner scan = new Scanner(System.in); int n = scan.nextInt(); for (int i = 1; i <= n; i++) { for (int j = i; j <= n; j++) { System.out.print((1 + j) * j / 2-i+1); if (j != n) { System.out.print(" "); } } if(i!=n){ System.out.println(); } } } }