public class test26 {
//矩阵处理技巧
public static void printMatrixZigZag(int[][] matrix){
int AR = 0;//A的行数
int AC = 0;//A的列数
int BR = 0;//B的行数
int BC = 0;//B的列数
int Endr = matrix.length - 1;//最后的行数
int Endc = matrix[0].length - 1;//最后的列数
//是不是右上往左下打印
boolean fromUp = false; //一开始是左下往右上打印
while (AR != Endr +1){
printLevel(matrix,AR,AC,BR,BC,fromUp);//告诉斜线的两端A和B还有方向,去打印
AR = AC == Endc ? AR +1 : AR;//A的列数如果到了最后一列,那么A的行号+1否则行号不变
AC = AC == Endc ? AC : AC +1;//A的列数如果到了最后一列,那么列数不变,否则+1
BC = BR == Endr ? BC +1 : BC;//B的行数如果到了最后一行,那么B的列数+1,否则不变
BR = BR == Endr ? BR : BR +1;//B的列数如果到了最后一行,那么B的行数不变,否则+1
fromUp = !fromUp;
}
System.out.println();
}
public static void printLevel(int[][] m , int tR , int tC , int dR ,int dC ,boolean f){
if(f){//右上往左下打印
while (tR != dR+1){
System.out.println(m[tR++][tC--] + " ");
}
}else{//左下往右上打印
while (dR != tR-1){
System.out.println(m[dR--][dC++] + " ");
}
}
}
}