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++] + " "); } } } }
04-02
5311
03-30
694
06-10