首页 > 编程语言 >算法随记_1 蛇形矩阵(偏移量法)

算法随记_1 蛇形矩阵(偏移量法)

时间:2024-01-25 22:44:11浏览次数:30  
标签:int res 矩阵 偏移量 样例 蛇形 sc 随记

蛇形矩阵

title:(在线学习平台) link:(https://www.acwing.com/) cover:(https://cdn.acwing.com/media/activity/surface/log.png)
  • 输入两个整数nm,输出一个nm列的矩阵,将数字1n×m按照回字蛇形填充至矩阵中。具体矩阵形式可参考样例。
    image

  • 输入样例
    3 3

  • 输出样例

1 2 3
8 9 4
7 6 5
  • 思路
    image

数字碰到边界后按照 右、下、左、上 的方向循环排列。从上到左编号为d=0、1、2、3
更新方式:image

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int n= sc.nextInt(),m= sc.nextInt();
        int[][] res=new int[n][m];//结果数组
        int[] dx={-1,0,1,0},dy={0,1,0,-1};//按照上、右、下、左(即d从0到3)的顺序,存储横纵坐标变化方式
        int x=0,y=0,d=1;//先向右走,d为方向右的编号:1
        for (int i=1;i<=n*m;i++){
            res[x][y]=i;
            int a=x+dx[d],b=y+dy[d];//下一次的坐标
            if(a<0||a==n||b<0||b>=m||res[a][b]>0){//判断坐标是否越界
                //坐标越界说明蛇形要转弯改变方向
                d=(d+1)%4;//变化规律
                a=x+dx[d];//更新坐标
                b=y+dy[d];
            }
            x=a;//更新坐标,即下次循环的res[x][y]
            y=b;
        }
        for(int i=0;i<n;i++){
            for (int j=0;j<m;j++){
                System.out.printf("%d ",res[i][j]);
            }
            System.out.println();
        }
    }
}

标签:int,res,矩阵,偏移量,样例,蛇形,sc,随记
From: https://www.cnblogs.com/jia-ming/p/17988288

相关文章

  • 图论 - 最短路随记
    顺序有点乱,后续会排一下,然后分板块整理All最短路算法的选择:\(n\le100\):Floyd(一般是较难的图论建模)\(n\le4\times10^5\):dijkstra尽量不用SPFA。神秘IDEA:一个带负权图,绝对最短路定义为,绝对值最小的最短路,求\(s\tot\)的绝对最短路。最短路中,任意......
  • k 栈排序随记
    定义给出序列\(a\),现有初始为空的序列\(b\)和\(k\)个初始为空的栈,你可以进行任意次以下两种操作:选择\(x\),若序列\(a\)非空,将\(a_1\)压入栈\(x\),并将其从序列\(a\)中删除。选择\(x\),若栈\(x\)非空,将栈\(x\)的栈顶元素加至序列\(b\)末端,并将其弹出。......
  • React 随记
    React没有响应式的概念useState的两个功能提供更新函数缓存变量数组或对象必须整体更新immutablemutable两个优点useRef的更新函数不会导致视图刷新普通变量也可以在视图中显示但是不会被监听状态的定义需要反向排除考虑并不是所有视图的需要的数据就定义为状态函......
  • 什么是kafka中topic、分区、副本、偏移量、消息保留策略
    Kafka是一个开源的分布式流式数据平台,也成为分布式消息队列。用于高吞吐量、低延迟的数据发布和订阅。 1、什么是topic(主题)? 在Kafka中,Topic(主题)是数据发布和订阅的基本单位,它代表了相同类型的消息流。 一个Topic可以看作是一个逻辑上的数据流管道,消息的生产者(Prod......
  • 练笔随记
    三月的天气很糟糕,下了雨接着就开始冷,没过几天又热回来,实在是粘腻的烦人。家里那盆花也是,叫什么仙客来来着,没看神仙来过,估计悄悄摸进来过衰星,害得我心烦意乱,总是脑子一团糟,还天天被爸妈轮番唠叨。楼上的邻居也是,不知道我们这一栋楼不是一个材质还是怎样,他家的房子是纸板房吗?隔三......
  • Java EasyExcel 随记
    JAR<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.7</version></dependency>入口EasyExcel.write(response.getOutputStream(),导出实体类.class).sheet("......
  • SQL语法基础随记
    参考资料:[廖雪峰的官方网站][菜鸟教程]写这个教程还是为了方便自己今后查阅,如果读者希望能够系统地学习SQL语言,还是找一个好的Tutorial看一下比较好。SQL语言的基础就是四个字:增查删改。我直接使用了一个开源的SQL客户端DBeaver作为自己客户端。进去之后它会自......
  • 随记
    一、书籍虚构的犹太民族 虚构的以色列地 我为何放弃做犹太人  一、自动化自动化的目的:减少重复性的回归测试工作如何设计架构:将基础服务(订单查询、包裹查询、加入包裹、呼叫运力等单接口)进行组装,提供模块化的能力(快递发货、自提核销、调拨完成,采购完成)进行场景......
  • crash —— 查看数据结构内部成员的偏移量和地址
    whatis如果提前知道数据类型的定义,可以直接用struct、union等,否则可以直接用whatis。crash>whatis-opagestructpage{[0]unsignedlongflags;union{struct{union{[8]structlist_headlru;......
  • 工作随记
    1、查询机器的磁盘内存的情况df-h 2、查询机器的cpu的情况lscpu 3、查询机器的gpu的情况nvidia-smi 3、deployment:在Kubernetes中,Deployment是一种资源对象,它定义了一组Pod的期望状态。Deployment可以帮助用户管理Pod的创建、更新和删除,保证应用的高可用性和可扩展性......