蓝桥杯官网练习题(螺旋矩阵)

这篇文章描述了一个Java程序,用于解决如何在给定n行m列的螺旋矩阵中找到第r行第c列的元素值。程序通过螺旋遍历的方式填充矩阵并存储索引,最后输出指定位置的数值。

题目描述

对于一个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]);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值