• 之字形打印矩阵


    思路:在(0,0)处,设置两个点,一个点a,一个点b,a和b同时移动,a向右移动,移到边界后向下移动,b向下移动,移动边界后向右移动,结束条件是a或者b到达矩阵的右下顶点,每次移动后就打印ab两点连线

    public class ZigZagPrintMatrix {
    
        public static void main(String[] args) {
    
            int[][] matrix = { { 1,  2,  3,   4  , 20 }, 
                               { 5,  6,  7,   8  , 21 },
                               { 9,  10, 11,  12 , 22 },
                               { 13, 14, 15, 16 , 23 } };
            print(matrix);
            //printLine(matrix,2,3,3,2,true);
        }
    
        public static void print(int[][] matrix) {
            int aR = 0;
            int aC = 0;
            int bR = 0;
            int bC = 0;
            boolean flag = false;
            while (aR != matrix.length || bC != matrix[0].length) {
                // System.out.println("(" +aR +","+ aC + ") " + "(" +bR+","+ bC + ") " );
                // 先打印
                printLine(matrix, aR, aC, bR, bC, flag);
                if (aR == 0 && aC < matrix[0].length - 1) { // 列逐渐增加
                    aC += 1;
                } else if (aR == 0 && aC == matrix[0].length - 1) { // 到达顶点后行增加
                    aR += 1;
                } else { // 行继续增加,直到aR = matrix.length跳出循环
                    aR += 1;
                }
                if (bC == 0 && bR < matrix.length - 1) {
                    bR += 1;
                } else if (bC == 0 && bR == matrix.length - 1) {
                    bC++;
                } else {
                    bC++;
                }
                flag = !flag;
            }
        }
    
        private static void printLine(int[][] matrix, int aR, int aC, int bR, int bC, boolean flag) {
            if (flag) { // 从右上向左下打印
                while (aR <= bR) {
                    System.out.print(matrix[aR++][aC--] + " ");
                }
            } else { // 从左下向右上打印
                while (bC <= aC) {
                    System.out.print(matrix[bR--][bC++] + " ");
                }
            }
        }
    }
  • 相关阅读:
    创建表头固定,表体可滚动的GridView(转)
    正则表达式实现资料验证的技术总结 (转)
    通过样式表实现固定表头和列 (转)
    如何把string解析为int?(转)
    代码设计简单规范 (转)
    取存储过程结果集
    JS对select动态添加options操作[IE&FireFox兼容]
    多UpdatePanel
    ASP.NET页面如何引发PostBack事件 转
    asp.net 页面回传
  • 原文地址:https://www.cnblogs.com/moris5013/p/11635194.html
Copyright © 2020-2023  润新知