zoukankan      html  css  js  c++  java
  • 剑指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
    ****************************************************************/
  • 相关阅读:
    面试中AOP这样说,面试官只有一个字:服!
    Spring第三天,详解Bean的生命周期,学会后让面试官无话可说!
    Spring第二天,你必须知道容器注册组件的几种方式!学废它吊打面试官!
    C#一些基础知识回顾
    关闭WiN10自动更新和后台程序。
    python脚本显示运行进程
    选择pyqt5理由
    anaconda3下64位python和32位python共存
    爬取百度搜索信息
    python尝试windows在用端口
  • 原文地址:https://www.cnblogs.com/Murcielago/p/4162890.html
Copyright © 2011-2022 走看看