zoukankan      html  css  js  c++  java
  • 顺序打印矩阵

    思路

    参考代码

    #include <iostream>
    using namespace std;
    void printNumAsClockwise(int a[][4], int row, int col)
    {
        if (row < 1 || col < 1)
            return;
        int up = 0, down = row -1, left = 0, right = col -1;
        int i = 0;
        while(up <= down && left <= right)
        {
            for(i = left; i <= right; ++i)
                cout << a[up][i] << " ";
            ++up;
    
            for(i = up; i <= down; ++i)
                cout << a[i][right] << " ";
            --right;
            
            for(i = right; i >= left; --i)
                cout << a[down][i] << " ";
            --down;
    
            for(i = down; i >= up; --i)
                cout << a[i][left] << " ";
            ++left;
                
        }
        cout << endl;
    }
            
    int main()
    {
        int a[][4] = {{1,2,3,4}, {5,6,7,8}, {9,10,11,12}, {13,14,15,16}};
        cout << sizeof(a) / sizeof(int) << endl;
        printNumAsClockwise(a, 4, 4);
    };

    二维数组可以用一维来代替

    #include <iostream>
    using namespace std;
    void printNumAsClockwise(int *a, int row, int col)
    {
        if (row < 1 || col < 1)
            return;
        int up = 0, down = row -1, left = 0, right = col -1;
        int i = 0;
        while(up <= down && left <= right)
        {
            for(i = left; i <= right; ++i)
                cout << a[up * col + i] << " ";
            ++up;
    
            for(i = up; i <= down; ++i)
                cout << a[i * col + right] << " ";
            --right;
            
            for(i = right; i >= left; --i)
                cout << a[down * col + i] << " ";
            --down;
    
            for(i = down; i >= up; --i)
                cout << a[i * col + left] << " ";
            ++left;
                
        }
        cout << endl;
    }
            
    int main()
    {
        int a[][4] = {{1,2,3,4}, {5,6,7,8}, {9,10,11,12}, {13,14,15,16}};
        cout << sizeof(a) / sizeof(int) << endl;
        printNumAsClockwise((int*)a, 4, 4);
    };

    注意

    注意判别参数符合范围

    if (row < 1 || col < 1)
            return;

    结果

    16
    1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10

  • 相关阅读:
    deepin15.7挂载/home到单独的分区:
    Docker配置整理
    Docker安装方法整理
    在ArangoDB中实现connectedcomponents算法
    Blazor入手教程(十一)使用组件库AntDesign Blazor
    Blazor入手教程(十)部署安装
    Blazor入手教程(九)c#和js互相调用
    Blazor入手教程(八)布局Layout
    Blazor入手教程(七)表单
    Blazor入手教程(六)组件的生命周期
  • 原文地址:https://www.cnblogs.com/kaituorensheng/p/3618042.html
Copyright © 2011-2022 走看看