文档章节

环形矩阵

柠檬味的猫咪
 柠檬味的猫咪
发布于 2015/06/06 13:31
字数 296
阅读 12
收藏 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
vtkSuperquadricSource:创建以原点为中心的多边形超二次曲面

 vtkSuperquadricSource 创建以原点为中心的多边形超二次曲面,可以设置尺寸。  设置两个(φ)的纬度和经度(θ)方向的分辨率(多边形离散化)。浑圆度参数(纬度浑圆度和经度浑圆度)控...

006玩命
06/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

window下安装maven

1.下载软件包: 2.解压到当前的安装路径: D:\Maven3.5.3 3.添加环境变量: 新建一个名为:MAVEN_HOME 填写解压路径:D:\Maven3.5.3 打开path,添加:%MAVEN_HOME%\bin 确定即可。 4.验证环境...

狼王黄师傅
6分钟前
0
0
聊聊flink的FsCheckpointStorage

序 本文主要研究一下flink的FsCheckpointStorage CheckpointStorage flink-runtime_2.11-1.7.0-sources.jar!/org/apache/flink/runtime/state/CheckpointStorage.java /** * CheckpointStor......

go4it
28分钟前
2
0
makefile 常用函数

Linux 环境下的程序员如果不会使用GNU make来构建和管理自己的工程,应该不能算是一个合格的专业程序员,至少不能称得上是 Unix程序员。今天我们来学习下makefile的常用函数。 《GNU make》h...

科陆李明
今天
17
0
Android 报错 Could not find com.android.tools.build:aapt2:3.2.1-4818971.

报错信息: Could not find com.android.tools.build:aapt2:3.2.1-4818971.Searched in the following locations: file:/C:/Users/96110/AppData/Local/Android/Sdk/extras/m2reposito......

lanyu96
今天
9
0
我的Linux系统九阴真经

我的Linux系统九阴真经 在今天,互联网的迅猛发展,科技技术也日新月异,各种编程技术也如雨后春笋一样,冒出尖来了。各种创业公司也百花齐放百家争鸣,特别是针对服务行业,新型互联网服务行...

linuxCool
今天
34
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部