网址:http://begin.lydsy.com/JudgeOnline/problem.php?id=1090
1090: 螺旋方阵
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 218 Solved: 130
[Submit][Status][Web Board]
Description
输出一个形如样例如的螺旋方阵
Input
一个整数n(0<n<10)
Output
一个n行方阵,每行n个数,每个数场宽为3
Sample Input
5
Sample Output
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
HINT
Source
AC代码:
package 螺旋方阵0090;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int number = input.nextInt();
int[][]array = new int[number][number];
init(array);
}
private static void init(int[][] a) {
int num=1;
int N = a.length;
int i=0,j=0,m=0;
if(N%2==0)
m=N/2;
else
m=N/2+1;
for(i=0;i<=m-1;i++){
for(j=i;j<=N-i-1;j++){ //输出第一行1,2,3,4(第一次循环);输出13,14(第二次循环)
a[i][j]=num;
num++;
}
for(j=i+1;j<=N-i-1;j++) {
a[j][N-i-1]=num; //输出右侧的5,6,7(第一次循环)输出15(第二次循环)
num++;
}
for(j=N-i-2;j>=i;j--){
a[N-i-1][j]=num; //输出8,9,10(第一次循环)输出16(第二次循环)
num++;
}
for(j=N-i-2;j>=i+1;j--){
a[j][i]=num; //输出11 12(只有一次循环)
num++;
}
}
for(i=0;i<N;i++){
for(j=0;j<N;j++){
System.out.print(String.format("%3d",a[i][j]));
}
System.out.println();
}
}
}