题目描述
在一个NN的方阵中,填入1,2,……NN个数,并要求构成如下的格式:
例如:
N=5
13 14 15 16 1
12 23 24 17 2
11 22 25 18 3
10 21 20 19 4
9 8 7 6 5
N=6
16 17 18 19 20 1
15 30 31 32 21 2
14 29 36 33 22 3
13 28 35 34 23 4
12 27 26 25 24 5
11 10 9 8 7 6
输入
每个测试文件只包含一组测试数据,每组输入一个N。
输出
输出构成的方阵。
样例输入 [Copy](javascript:CopyToClipboard($(‘#sampleinput’).text()))
5
样例输出 [Copy](javascript:CopyToClipboard($(‘#sampleoutput’).text()))
13 14 15 16 1
12 23 24 17 2
11 22 25 18 3
10 21 20 19 4
9 8 7 6 5
提示
6
-------------------------
16 17 18 19 20 1
15 30 31 32 21 2
14 29 36 33 22 3
13 28 35 34 23 4
12 27 26 25 24 5
11 10 9 8 7 6
代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int N = scanner.nextInt();
int[][] A=new int[N][N];
int r=0,c=N-1,s=1;
for(int i=N-1;i>=0;i=i-2){
if(i==0){
A[r][c]=s;
break;
}
for(int j=0;j<i;j++){
A[r++][c]=s++;
}
for(int j=0;j<i;j++){
A[r][c--]=s++;
}
for(int j=0;j<i;j++){
A[r--][c]=s++;
}
for(int j=0;j<i;j++){
A[r][c++]=s++;
}
r++;c--;
}
for(int i=0;i<N;i++){
for(int j=0;j<N;j++){
System.out.printf("%d ",A[i][j]);
}
System.out.println();
}
}
}