0
点赞
收藏
分享

微信扫一扫

基于企业微信第三方接口开发,发送朋友圈评论

书坊尚 2024-08-07 阅读 27
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++] + " ");
            }
        }
    }
}
举报

相关推荐

0 条评论