题目:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
输出:1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10
解法: 模拟顺时针 注意边界情况
import java.sql.Array;
import java.util.*;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n = input.nextInt();
int[][] arr = new int[n][n];
int num =1;
for(int i=0;i<n;i++){
for(int j =0;j<n;j++){
arr[i][j] = num++;
}
}
print(arr);
}
public static void print(int[][] arr){
int startCol = 0,startRow = 0,endCol = arr.length-1,endRow = arr[0].length-1;
while(startCol<=endCol && startRow <= endRow){
int c = startCol,r = startRow;
while(c<=endCol){
System.out.print(arr[r][c++]+" ");
}
c--;
r++;
while(r<=endCol){
System.out.print(arr[r++][c]+" ");
}
r--;
c--;
while(c>=startCol){
System.out.print(arr[r][c--]+" ");
}
c++;
r--;
while(r>startRow){
System.out.print(arr[r--][c]+" ");
}
startCol++;startRow++;endCol--;endRow--;
}
}
}