1、问题描述
对于一个 n 行 m 列的表格,我们可以使用螺旋的方式给表格依次填上正整数,我们称填好的表格为一个螺旋矩阵。
例如,一个 4 行 5 列的螺旋矩阵如下:
1 2 3 4 5
14 15 16 17 6
13 20 19 18 7
12 11 10 9 8
请问,一个 30 行 30 列的螺旋矩阵,第 20 行第 20 列的值是多少?
2、代码实现
public class 超大玉螺旋丸 {
public static void main(String[] args) {
int ans = 1;
int n = 30;
int[][] map = new int[n][n];
int left = 0;
int right = n - 1;
int top = 0;
int bottom = n - 1;
while(ans <= n * n) {
// left to right
for(int i = left;i <= right;i++) {
map[left][i] = ans++;
}
top++;
// top to bottom
for(int i = top;i <= bottom;i++) {
map[i][right] = ans++;
}
right--;
// right to left
for(int i = right;i >= left;i--) {
map[bottom][i] = ans++;
}
bottom--;
// bottom to top
for(int i = bottom;i >= top;i--) {
map[left][i] = ans++;
}
left++;
}
System.out.println(map[19][19]);
}
}