zoukankan      html  css  js  c++  java
  • 回形打印

    2018-03-17 15:59:34

    问题描述:将矩阵进行回形打印。

    问题求解:其实只要将最外围的打印写出来就可以完成整个的算法,可以说是一种分治策略吧。

    唯一需要注意的是这里的左上角起点的选择问题,不能单纯的除2,应该是小于ceil(n),当然,我在实现的时候采用的对奇偶进行判断的方法完成的向上取整,道理是一样的。

        public ArrayList<Integer> printMatrix(int[][] m) {
            int x = 0;
            int y = 0;
            int row = m.length;
            int col = m[0].length;
            int midx = row % 2 == 0 ? row / 2 - 1 : row / 2;
            int midy = col % 2 == 0 ? col / 2 - 1 : col / 2;
            ArrayList<Integer> res = new ArrayList<>();
            while (x <= midx && y <= midy) {
                core(m, x, y, row, col, res);
                x++;
                y++;
                row -= 2;
                col -= 2;
            }
            return res;
        }
    
        void core(int[][] m, int x, int y, int row, int col, ArrayList<Integer> ls) {
            if (row == 1) {
                for (int i = 0; i < col; i++) {
                    ls.add(m[x][y + i]);
                }
                return;
            }
            if (col == 1) {
                for (int i = 0; i < row; i++) {
                    ls.add(m[x + i][y]);
                }
                return;
            }
    
            for (int i = 0; i < col - 1; i++) {
                ls.add(m[x][y + i]);
            }
            y += col - 1;
            for (int i = 0; i < row - 1; i++) {
                ls.add(m[x + i][y]);
            }
            x += row - 1;
            for (int i = 0; i < col - 1; i++) {
                ls.add(m[x][y - i]);
            }
            y -= col - 1;
            for (int i = 0; i < row - 1; i++) {
                ls.add(m[x - i][y]);
            }
        }
    
  • 相关阅读:
    Django rest framework Pagination(分页)
    Vue的mixin的一点使用(table的头部sticky的实现)
    spark streaming中维护kafka偏移量到外部介质
    spring-cloud-gateway负载普通web项目
    JdbcTemplate实体映射
    Sqoop葵花宝典
    kettle web化
    Summer Project
    Spark执行失败时的一个错误分析
    spark load data from mysql
  • 原文地址:https://www.cnblogs.com/hyserendipity/p/8590471.html
Copyright © 2011-2022 走看看