题目描述
对于一个n行m列的表格,我们可以使用螺旋的方式给表格依次填上正整数,我们称填好的表格为一个螺旋矩阵。
例如,一个4行5列的螺旋矩阵如下
1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|
14 | 15 | 16 | 17 | 6 |
13 | 20 | 19 | 18 | 7 |
12 | 11 | 10 | 9 | 8 |
输入描述
输入的第一行包含两个整数n, m,分别表示螺旋矩阵的行数和列数 第二行包含两个整数r,c,表示要求的行号和列号。
其中,2<= n, m<= 1000,1<=r<=n, 1<= C<= m。
例如:
4 5
2 2
输出描述
输出一个整数,表示螺旋矩阵中第r行第c列的元素的值。
例如:
对应输出:
15
参考代码
public static void main(String[] args) {
int m, n, r, c, ans = 1;
Scanner in = new Scanner(System.in);
m = in.nextInt();
n = in.nextInt();
r = in.nextInt();
c = in.nextInt();
int x = 0;
int y = 0;
int[][] a = new int[1010][1010];
a[0][0] = 1;
while (ans < n * m) {
while(y+1<n&&a[x][y+1]==0){//向右
a[x][++y]=++ans;
}
while(x+1<m&&a[x+1][y]==0){//向下
a[++x][y]=++ans;
}
while(y-1>=0&&a[x][y-1]==0){//向左
a[x][--y]=++ans;
}
while(a[x-1][y]==0){//向上
a[--x][y]=++ans;
}
}
// for (x=0;x<m;x++){
// for(y=0;y<n;y++){
// System.out.print(a[x][y]+" ");
// }
// System.out.println();
// }
System.out.println(a[r-1][c-1]);
}