Java算法–第四章–多维数组和矩阵(3)题目:Z形打印
代码:
package matrix;
public class PrintZMatrix {
public static void main(String[] args) {
int[][] matrix = {
{ 1, 2, 3, 4, 5 },
{ 6, 7, 8, 9, 10 },
{ 11, 12, 13, 14, 15 },
{ 16, 17, 18, 19, 20 },
{ 21, 22, 23, 24, 25 },
};
print(matrix);
}
static void print(int[][] matrix) {
int r = 0,m = matrix.length;
int c = 0, n = matrix[0].length;
boolean l2r =true;//从左到右
while(r < m && c < n) {
//从左下到右上的斜坡
if(l2r) {
System.out.print(matrix[r][c]+" ");
//现在是第一行,列未到边界,这时只能向右走
if(r == 0&& c < n-1) {
l2r = !l2r;//方向切换
c++;
continue;
}else if(r >= 0 && c == n-1) {//现在在最后一列,只能向下走
l2r = !l2r;
r++;
continue;
}else {//继续上坡
r--;
c++;
}
}else {
System.out.print(matrix[r][c]+" ");
//现在是第一列,行未到边界,这时只能向下走
if(c == 0&& r < m-1) {
l2r = !l2r;//方向切换
r++;
continue;
}else if(r == m-1) {//现在在最后一行,只能向右走
l2r = !l2r;
c++;
continue;
}else {//继续上坡
r++;
c--;
}
}
}
}
}
输出:
1 2 6 11 7 3 4 8 12 16 21 17 13 9 5 10 14 18 22 23 19 15 20 24 25