JAvaスパイラルマトリクス
public class Sequence {
public static void main(String[] args) {
int n = 5;
// 0: ,1: ,2: ,3:
int direction = 0;
// ,
int row = 0, col = 0;
int num = 0;
int[] array = new int[n * n];
while (array[row * n + col] == 0) {
num++;
array[row * n + col] = num;
switch (direction) {
case 0:
col++;
break;
case 1:
row++;
break;
case 2:
col--;
break;
case 3:
row--;
break;
}
if (row == n || col == n || row == -1 || col == -1
|| array[row * n + col] != 0) {
direction++;
if (direction == 4)
direction = 0;
switch (direction) {
case 0:
row++;
col++;
break;
case 1:
row++;
col--;
break;
case 2:
row--;
col--;
break;
case 3:
row--;
col++;
break;
}
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
System.out.printf("%-3s", array[i * n + j]);
}
System.out.println();
}
}
}
出力結果:
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