文档章节

环形矩阵

柠檬味的猫咪
 柠檬味的猫咪
发布于 2015/06/06 13:31
字数 296
阅读 11
收藏 0

面试题:

给你4,程序输出:

   01 12 11 10
   02 13 16 09
   03 14 15 08
   04 05 06 07

   给你5,程序输出:

   01 16 15 14 13
   02 17 24 23 12
   03 18 25 22 11
   04 19 20 21 10
   05 06 07 08 09

不难发现其实就是一个环形矩阵问题,规律就是它需要在哪里转变打印方向

从上图可以得出转头的规律

public class PrintCircularMatrix {

    public static void main(String[] args) {
        int SIZE = 6;
        int[][] arr = new int[SIZE][SIZE]; // 创建了一个二维数组
        //默认向下
        int orient = 0; // 0代表向下,1代表向右,2代表向上,3代表向左
        for(int i=1,row=0,col=0;i<=SIZE*SIZE;i++){
            arr[row][col]=i;
            // 位于①号对角线的 下一半
            if(row+col==SIZE-1&&row>=SIZE/2){
                orient=1;
            }
            // 位于①号对角线的 上一半
            if(row+col==SIZE-1&&row<SIZE/2){
                orient=3;
            }
            // 位于②号对角线的 下一半
            if(row==col&&row>=SIZE/2){
                orient=2;
            }
            if(col-row==1&&row<SIZE/2){
                orient = 0;
            }
            
            switch (orient) {
            case 0:
                row++;
                break;
            case 1:
                col++;
                break;
            case 2:
                row--;
                break;
            case 3:
                col--;
                break;
                
            }
            
        }
        
        //循环打印
        for (int i = 0; i < SIZE; i++) {
            for (int j = 0; j < SIZE; j++) {
                if (arr[i][j] < 10) {
                    System.out.print("0" + arr[i][j] + "\t");
                } else {
                    System.out.print(arr[i][j] + "\t");
                }
            }
            System.out.println();
        }
    }

}



© 著作权归作者所有

共有 人打赏支持
柠檬味的猫咪
粉丝 1
博文 12
码字总数 2030
作品 0
广州
后端工程师
巧妙使用transform实现环形路径平移动画

最近在CSS Secrets一书看到了这样一节:让一个元素沿环形路径平移。这是一个css动画的问题,但却没有看上去那么简单,其关键点是元素是平移的,也就是说,元素自身并不发生旋转,只是稳定地沿...

黑魔法
2016/11/15
272
0
《程序员代码面试指南》Python实现(个人读书笔记)

说明   最近一直在读左神的书——《程序员代码面试指南—IT名企算法与数据结构题目最优解》,为了记录自己的学习成果,并且方便以后查看,将自己读书时的想法与使用python实现的代码记录在...

qq_34342154
2017/09/09
0
0
GPU高效通信算法-Ring Allreduce

今天介绍一种新的GPU多卡计算的通信优化算法—Ring Allreduce。先来讲一下常规的GPU多卡分布式计算的原理。 第一点:我们知道GPU在矩阵并行化计算方面非常有优势,所以适合深度学习的训练。 ...

gshengod
01/10
0
0
Excel数据可视化分析方法大全

小A是奇葩公司销售运营管理部门一名老员工,他每周最重要的工作是从公司各系统中收取不同数据为老板制作业务分析报表,小A对工作认真负责,在他提交的报表中从未发生过数据错误的情况。以下是...

高阔
2017/02/16
0
0
数据库查询性能优化之利器—索引(一)

  数据库查询性能优化之利器—索引(一)   最近在做基于Android的公交查询系统的过程中,遇到一个很棘手的问题:换乘算法效率低。在直达查询和一次换乘查询的时候,问题体现的还不是很明...

eddie小英俊
2015/01/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Web系统大规模并发:电商秒杀与抢购

一、大规模并发带来的挑战 在过去的工作中,我曾经面对过5w每秒的高并发秒杀功能,在这个过程中,整个Web系统遇到了很多的问题和挑战。如果Web系统不做针对性的优化,会轻而易举地陷入到异常...

xtof
今天
1
0
代码质量管理平台-sonarqube

在工作中,往往开发的时候会不怎么注重代码质量的人很多,存在着很多的漏洞和隐患等问题,sonarqube可以进行代码质量的审核,而且十分的残酷。。。。。接下来我们说下怎么安装 进入官网下载:...

落叶清风
今天
6
0
在Ubuntu安装和配置Sphinx

Ubuntu系统默认是配置有sphinx的,先检查一下,别多此一举。。。。。 在开始本指南之前,您需要: 一个Ubuntu 16.04服务器。 sudo的一个非root用户,您可以通过以下设置本教程 。 安装在服务...

阿锋zxf
今天
1
0
Qt编写输入法V2018超级终结版

对于qt嵌入式linux开发人员来说,输入法一直是个鸡肋问题,要么不支持实体键盘同步,要么不能汉字输入,要么不支持网页输入等,这几年通过陆续接触大量的各种输入法应用场景客户,得到真实需...

飞扬青云
今天
2
0
TypeScript基础入门之高级类型的多态的 this类型

转发 TypeScript基础入门之高级类型的多态的 this类型 高级类型 多态的this类型 多态的this类型表示的是某个包含类或接口的子类型。 这被称做F-bounded多态性。 它能很容易的表现连贯接口间的...

durban
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部