• 剑指OFFER之顺时针打印矩阵


    题目描述:

    输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵:

    1 2 3 4

    5 6 7 8

    9 10 11 12

    13 14 15 16

    则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.

    输入:

    输入可能包含多个测试样例,对于每个测试案例,

    输入的第一行包括两个整数m和n(1<=m,n<=1000):表示矩阵的维数为m行n列。

    接下来的m行,每行包括n个整数,表示矩阵的元素,其中每个元素a的取值范围为(1<=a<=10000)。

    输出:

    对应每个测试案例,输出一行,

    按照从外向里以顺时针的顺序依次打印出每一个数字,每个数字后面都有一个空格。

    样例输入:
    4 4
    1 2 3 4
    5 6 7 8
    9 10 11 12
    13 14 15 16
    
    样例输出:
    1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10 

    Code:
    #include <cstdio>
     
    using namespace std;
     
    int arr[1010][1010];
     
    void printMatrixInCircle(int rows,int columns,int start){
        int endX=rows-1-start;
        int endY=columns-1-start;
        for(int i=start;i<=endY;++i)
            printf("%d ",arr[start][i]);
        if(start<endX){
            for(int i=start+1;i<=endX;++i)
                printf("%d ",arr[i][endY]);
        }
        if(start<endX&&start<endY){
            for(int i=endY-1;i>=start;--i)
                printf("%d ",arr[endX][i]);
        }
        if(start<endX-1&&start<endY){
            for(int i=endX-1;i>start;--i)
                printf("%d ",arr[i][start]);
        }
    }
     
    int main()
    {
        int n,m;
        while(scanf("%d%d",&n,&m)!=EOF){
            for(int i=0;i<n;++i)
                for(int j=0;j<m;++j)
                    scanf("%d",&arr[i][j]);
            int start=0;
            int rows=n;
            int columns=m;
            while(rows>start*2&&columns>start*2){
                printMatrixInCircle(rows,columns,start);
                ++start;
            }
            printf("
    ");
     
        }
        return 0;
    }
     
    /**************************************************************
        Problem: 1391
        User: lcyvino
        Language: C++
        Result: Accepted
        Time:520 ms
        Memory:5504 kb
    ****************************************************************/
  • 相关阅读:
    20170411linux常用命令
    20170411oracle常用命令
    20170411-oracle 查询指定节点下的所有子节点包括直到叶子节点
    20170329oracle安装教程
    20170329plsql连接oracle
    20170329001怎么让plsql窗口列表保持
    Eclispse 换主题、皮肤、配色,换黑色主题护眼
    zbb20170303使用ssh一直找不到session,报错not found session in current thread
    zbb20170303_ant_build.xml详解
    hdu Farm Irrigation
  • 原文地址:https://www.cnblogs.com/Murcielago/p/4162890.html
Copyright © 2020-2023  润新知