当前位置: 首页 > news >正文

多维数组与矩阵之之字形打印矩阵

问题描述

给定一个矩阵matrix, 按照“之” 字形的方式打印这个矩阵
例如:给定一个矩阵:
4 X 4 矩阵
则依次打印出的数字为:
1 2 5 9 6 3 4 7 10 13 14 11 8 12 15 16

算法思路

先贴出一张4 X 4的矩阵之子打印的流程图,会比较方便理解
之子打印流程图

算法代码

public class _03_之字形打印 {
   public static void main(String[] args) {
       int[][] matrix = {
               {1,2,3,4},
               {5,6,7,8},
               {9,10,11,12},
               {13,14,15,16}
       };
       printZig(matrix);
   }

   private static void printZig(int[][] matrix) {
       int row = 0,col = 0;
       int m = matrix.length;
       int n = matrix[0].length;
       boolean up = true;//从左下到右上

       while (row < m && col < n) {
           System.out.print(matrix[row][col]+" ");
           if (up) {//从左下到右上
               if (row == 0 && col < n - 1) {//现在在第一行,只能向右走
                   up = !up;
                   col ++;
                   continue;
               } else if (col == n - 1 && row > 0) {//现在在最后一列,只能向下走
                   up = !up;
                   row ++;
                   continue;
               } else {//继续走上坡
                   row --;
                   col ++;
               }
           } else {//从右上到左下
               if (col == 0 && row < m - 1) {//现在在第一列,只能向下走
                   up = !up;
                   row ++;
                   continue;
               } else if(row == m - 1 && col < n - 1) {//现在在最后一行,只能向右走
                   up = !up;
                   col ++;
                   continue;
               } else {//继续走下坡
                   row ++;
                   col --;
               }
           }
       }
   }
}

相关文章:

  • 生姜有味的调色板
  • 设计模式之策略者模式详解(Strategy Pattern)
  • 利用J2ME里的RMS对记录进行排序
  • 设计模式之职责链(责任链)模式(ResponsibilityChain Pattern)
  • SWT GC的drawLine方法的一个隐藏Bug
  • 多维数组与矩阵之子数组的最大累加和
  • 游戏也是软件,J2ME游戏程序员不能忘本
  • 多维数组与矩阵之子矩阵的最大累加和
  • 本周技术关注:Oracle10G、MSSQL2005、MYSQL5: CLuster、Replication、Snapshot
  • 设计模式之解释器模式详解(Interpreter Pattern)
  • 书评--信息经营法则
  • Java最大公约数与最小公倍数
  • 关于SWT drawLine bug的进一步验证
  • 矩阵乘法
  • IT出版人的Blog世界
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • download使用浅析
  • Java IO学习笔记一
  • Material Design
  • Python 基础起步 (十) 什么叫函数?
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • SpiderData 2019年2月25日 DApp数据排行榜
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • vue的全局变量和全局拦截请求器
  • 百度地图API标注+时间轴组件
  • 初识MongoDB分片
  • 第2章 网络文档
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 区块链共识机制优缺点对比都是什么
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 以太坊客户端Geth命令参数详解
  • 由插件封装引出的一丢丢思考
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • 选择阿里云数据库HBase版十大理由
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • #git 撤消对文件的更改
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • ${factoryList }后面有空格不影响
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • (1)虚拟机的安装与使用,linux系统安装
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (待修改)PyG安装步骤
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (离散数学)逻辑连接词
  • (三) diretfbrc详解
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • .NET Core 项目指定SDK版本
  • .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上
  • .net 前台table如何加一列下拉框_如何用Word编辑参考文献
  • .NET序列化 serializable,反序列化
  • .sdf和.msp文件读取