import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); int[][] nums = new int[n][n]; int count = 0; //矩阵数字 int i = 0, j = 0;//i代表行,j代表列 for (int k = 0; k < n - 1; k++) { //循环次数n-1次 int b = j; for (i = 0; j < b + 2; j++) { //一次循环内的横向走向 if (j < n) nums[i][j] = ++count; } for (i = 1, j = j - 2; j >= 0; i++, j--) { //右上到左下走向 if (i >= 0 && j >= 0 && j < n && i < n) nums[i][j] = ++count; } for (j = 0; i > 0; i--, j++) { //左下到右上走向 if (i >= 0 && j >= 0 && j < n && i < n) nums[i][j] = ++count; } } for (int k = 0; k < n; k++) { for (int l = 0; l < n; l++) { System.out.print(nums[k][l] + " "); } System.out.println(); } } }
import java.util.*; public class Main{ public static void main(String[] args){ Scanner in=new Scanner(System.in); int n=in.nextInt(); int[][] a=new int[n][n]; int z=0,i=0,j=0; while(z<n*n){ for(j=0;i>=0;i--,j++) if(i<n && j<n) a[i][j]=++z; for(i=0;j>=0;i++,j--) if(i<n && j<n) a[i][j]=++z; } for(int[] k:a) { for (int p : k) System.out.print(p + " "); System.out.println(); } 比较简单