打印矩阵 【之字矩阵】 古城微笑少年丶 2022-05-12 03:44 143阅读 0赞 > ## 说明 ## > > `sx,sy` 指向第一个元素,`ex,ey` 指向最后一个元素 > 先横向处理num\[i,j\] 到 num\[j,i\],后竖向处理,每次处理使用 flag调整打印方向 > ![这里写图片描述][70] -------------------- ## 代码一 ## package com.company; import org.junit.jupiter.api.Test; public class PrintMatrixZigZag { @Test public void testPrint(){ int[][] a = { { 1,2,3,4}, { 5,6,7,8},{ 9,10,11,12},{ 13,14,15,16}}; printMatrix(a); } public static void printMatrix(int[][] num) { int sx = 0; int sy = 0; int ex = num.length; int ey = num[0].length; boolean flag = true; while (sy < ey) { print(num, sx, sy, flag, sy, sx); flag = !flag; sy ++; } sy--; while (sx < ex) { print(num, sx, sy, flag, sy, sx); flag = !flag; sx ++; } } private static void print(int[][] num, int x, int y, boolean flag, int x1, int y1) { if (flag) { /*===== 上到下 ======*/ while (x1>=x && y1<=y) { System.out.print("-"+num[x++][y--]+"-"); } }else{ /*========下到上===*/ while (x1>=x && y1<=y) { System.out.print("-"+num[x1--][y1++]+"-"); } } System.out.println(""); } } ## 代码二 ## package com.company; import org.junit.jupiter.api.Test; public class PrintMatrixZigZag { @Test public void testPrint(){ int[][] a = { { 1,2,3,4}, { 5,6,7,8},{ 9,10,11,12},{ 13,14,15,16}}; printMatrix(a); } public static void printMatrix(int[][] num) { int sx = 0; int sy = 0; int ex = num.length-1; int ey = num[0].length-1; boolean flag = true; while (sx != ex) { print(num, sx, sy, flag, sy, sx); sx = sy == ey ? sx +1: sx; sy = sy == ey ? sy : sy +1; flag = !flag; } } private static void print(int[][] num, int x, int y, boolean flag, int x1, int y1) { if (flag) { /*===== 上到下 ======*/ while (x1>=x && y1<=y) { System.out.print("-"+num[x++][y--]+"-"); } }else{ /*========下到上===*/ while (x1>=x && y1<=y) { System.out.print("-"+num[x1--][y1++]+"-"); } } System.out.println(""); } } [70]: /images/20220512/5d14bcb692894400967709175162c412.png
还没有评论,来说两句吧...