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

  • 相关阅读:
    CentOS7 安装rabbitmq
    CentOS 7安装和配置ssh
    日志备份脚本
    Dubbo配置优化
    MySQL Index Condition Pushdown(ICP) 优化
    Mysql 5.6 新特性(转载)
    Mysql 中bitwise对效率的影响??
    Linux 通过 load average 判断服务器负载情况
    VMware使用过程中出现了虚拟机繁忙问题
    Centos7设置开机启动界面:图形化or命令行
  • 原文地址:https://www.cnblogs.com/kaituorensheng/p/3618042.html
Copyright © 2011-2022 走看看