N*Nのスパイラルマトリクスを印刷
4726 ワード
import java.util.Scanner;
public class Test9 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
while (input.hasNext()) {
int n = input.nextInt();
int[][] num = new int[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
num[i][j] = -1;
}
}
int index = 1;
int value = 1;
int i = 0;
int j = 0;
int dir = 0; // 0,1,2,3 , , ,
while (index <= n * n) {
num[i][j] = value;
value++;
switch (dir) {
case 0:
j++;
if (j >= n || num[i][j] != -1) {
j--;
i++;
dir = 1;
}
break;
case 1:
i++;
if (i >= n || num[i][j] != -1) {
i--;
j--;
dir = 2;
}
break;
case 2:
j--;
if (j < 0 || num[i][j] != -1) {
j++;
i--;
dir = 3;
}
break;
case 3:
i--;
if (i < 0 || num[i][j] != -1) {
i++;
j++;
dir = 0;
}
break;
default:
break;
}
index++;
}
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
if (j == 0) {
System.out.print(num[i][j]);
} else {
System.out.print(" " + num[i][j]);
}
}
System.out.println();
}
}
input.close();
}
}