题目描述
对于一个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。
输出描述
输出一个整数,表示螺旋矩阵中第r行第c列的元素的值。
输入输出样例
示例
输入
4 5 2 2
输出
15
import java.util.Scanner;
public class main1 {
static Scanner scan=new Scanner(System.in);
static int n=scan.nextInt();
static int m=scan.nextInt();
static int x=scan.nextInt();
static int y=scan.nextInt();
static int num=1;
static int[][] a=new int[n][m];
public static void main(String[] args) {
int shang=0,xia=n,zuo=0,you=m;
while(true){
for(int i=zuo;i<you;i++){
a[shang][i]=num;
num++;
}
shang++;
if(shang==xia){
break;
}
for(int i=shang;i<xia;i++){
a[i][you-1]=num;
num++;
}
you--;
if(zuo==you){
break;
}
for(int i=you-1;i>=zuo;i--){
a[xia-1][i]=num;
num++;
}
xia--;
if(xia==shang){
break;
}
for(int i=xia-1;i>=shang;i--){
a[i][zuo]=num;
num++;
}
zuo++;
if(zuo==you){
break;
}
}
System.out.println(a[x-1][y-1]);
}
}
这篇文章描述了一个Java程序,用于解决如何在给定n行m列的螺旋矩阵中找到第r行第c列的元素值。程序通过螺旋遍历的方式填充矩阵并存储索引,最后输出指定位置的数值。
1444

被折叠的 条评论
为什么被折叠?



