牛客网——回型矩阵

简介: 牛客网——回型矩阵

前言


今天咱们一起学习一下一种特殊矩阵——回型矩阵。

一、回型矩阵


题目来源:

回型矩阵_牛客题霸_牛客网

描述


给你一个整数n,按要求输出n∗n的回型矩阵

输入描述:


输入一行,包含一个整数n

1<=n<=19

输出描述:


输出n行,每行包含n个正整数.

二、解题过程


1.解题思路


我们先观察矩阵,发现它是一圈一圈地走,从左往右,上往下,右往左,下往上走,数字逐渐递增,属实是回型。那么我们就要想办法设置合适的循环来解这道题了,这里我用了边界法(按我自个的理解来命名哈)。

2.代码


#include<stdio.h>
int main(){
    int n,a=1,i;
    int arr[20][20];
    scanf("%d",&n);
    int l=0,r=n-1;            //l为左边界  r为有边界
    while(l<r){                        //定义循环条件很重要!!!
        for(i=l;i<=r;i++){        //左边界往右走,写完最上面一行
           arr[l][i]=a;
            a++;
        }
        for(i=l+1;i<=r;i++){        //因为最右上角已经被写了,那么从上到下的的上边界就要加一了
            arr[i][r]=a;
            a++;
        }
        for(i=r-1;i>=l;i--){        //最右下角被写,有边界减一
           arr[r][i]=a;
            a++;
        }
        for(i=r-1;i>l;i--){        //同理
            arr[i][l]=a;
            a++;
        }
        l++;            //没走一圈,边界就往里缩一圈,自然要相应改变
        r--;
    }
    if(n%2!=0){            //记得一定要判断n的奇偶,奇数的话,走完最后一圈中心还会有一个空
       arr[l][l]=a;
    }
    for(int k=0;k<n;k++){
        for(int w=0;w<n;w++){
            printf("%d ",arr[k][w]);        //输出就好
        }
        printf("\n");
       }
    return 0;
}

可能这种方法我表述得不太好,就是看成两条线往中间夹,多去思考我相信你一定可以理解的。

总结


以上就是今天要讲的内容,本文仅仅简单介绍了判断回型数组的一个方法,希望对大家有帮助~码字不易,请多多支持~~

相关文章
|
druid Java 数据库连接
Spring Boot3整合MyBatis Plus
Spring Boot3整合MyBatis Plus
890 1
|
数据安全/隐私保护
建木(Jianmu)----使用docker-compose安装部署Jianmu(建木)
建木(Jianmu)----使用docker-compose安装部署Jianmu(建木)
764 0
建木(Jianmu)----使用docker-compose安装部署Jianmu(建木)
|
SQL 监控 druid
p6spy【SpringBoot集成】使用p6spy-spring-boot-starter集成p6spy监控数据库(配置方法举例)
p6spy【SpringBoot集成】使用p6spy-spring-boot-starter集成p6spy监控数据库(配置方法举例)
2928 0
|
11月前
|
Java 数据库连接 测试技术
SpringBoot入门 - 添加内存数据库H2
SpringBoot入门 - 添加内存数据库H2
658 3
SpringBoot入门 - 添加内存数据库H2
|
人工智能 运维 云计算
阿里云无影AI云电脑亮相 体验大幅升级
9月20日,2024云栖大会上阿里云无影AI云电脑全新亮相,基于最新的终端云计算技术和AI大模型能力,无影的综合体验大幅提升,新增了弹性升降配、双网自由切换、多端操作系统知识库问答、编码大师等AI智能体功能,为安全办公、个人娱乐带来全新的云上流畅体验,更可畅玩《黑神话:悟空》等3A游戏大作。同时,无影还宣布向开发者全面开放应用中心生态,开发者可免费入驻。
2119 15
|
9月前
|
Kubernetes Java 持续交付
小团队 CI/CD 实践:无需运维,Java Web应用的自动化部署
本文介绍如何使用GitHub Actions和阿里云Kubernetes(ACK)实现Java Web应用的自动化部署。通过CI/CD流程,开发人员无需手动处理复杂的运维任务,从而提高效率并减少错误。文中详细讲解了Docker与Kubernetes的概念,并演示了从创建Kubernetes集群、配置容器镜像服务到设置GitHub仓库Secrets及编写GitHub Actions工作流的具体步骤。最终实现了代码提交后自动构建、推送镜像并部署到Kubernetes集群的功能。整个过程不仅简化了部署流程,还确保了应用在不同环境中的稳定运行。
447 9
|
11月前
|
缓存 IDE Java
SpringBoot入门(7)- 配置热部署devtools工具
SpringBoot入门(7)- 配置热部署devtools工具
523 2
 SpringBoot入门(7)- 配置热部署devtools工具
|
12月前
|
前端开发 Docker 容器
主机host服务器和Docker容器之间的文件互传方法汇总
Docker 成为前端工具,可实现跨设备兼容。本文介绍主机与 Docker 容器/镜像间文件传输的三种方法:1. 构建镜像时使用 `COPY` 或 `ADD` 指令;2. 启动容器时使用 `-v` 挂载卷;3. 运行时使用 `docker cp` 命令。每种方法适用于不同场景,如静态文件打包、开发时文件同步及临时文件传输。注意权限问题、容器停止后的文件传输及性能影响。
2868 1
|
Java 数据库连接 数据库
sqlLite 如何使用数据库连接池
这篇文章介绍了如何在SQLite数据库操作中使用HikariCP连接池以减少频繁建立和释放数据库连接的资源消耗,包括在Maven项目中添加依赖、配置HikariDataSource对象以及实现数据库连接池的具体代码示例。
springboot整合mybatis-plus及mybatis-plus分页插件的使用
这篇文章介绍了如何在Spring Boot项目中整合MyBatis-Plus及其分页插件,包括依赖引入、配置文件编写、SQL表创建、Mapper层、Service层、Controller层的创建,以及分页插件的使用和数据展示HTML页面的编写。
springboot整合mybatis-plus及mybatis-plus分页插件的使用