顺时针打印矩阵

来源:互联网 发布:sqlserver编写事务 编辑:程序博客网 时间:2024/04/29 05:19

例如矩阵:

1        2        3        45        6        7        89        10      11        1213       14      15        16

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

//顺时针打印矩阵void PrintMatrixInCirclie(int (*numbers)[4],int columns,int rows,int start){    int endX = columns - 1 - start;    int endY = rows - 1 - start;    //从左到右打印一行    for(int i = start;i<=endX;++i)    {        cout<<numbers[start][i]<<" ";    }    //从上到下打印一列    if(start<endY)    {        for(int i = start+1;i<=endY;++i)        {            cout<<numbers[i][endX]<<" ";        }    }    //从右到左打印一行    if(start<endX && start<endY)    {        for(int i=endX-1;i>=start;--i)        {            cout<<numbers[endY][i]<<" ";        }    }    //从下到上打印一列    if(start<endX && start<endY-1)    {        for(int i = endY-1;i>start;--i)        {            cout<<numbers[i][start]<<" ";        }    }}void PrintMatrixInClockwisely(int (*numbers)[4],int columns,int rows){    if(numbers == NULL||columns<=0||rows<=0)        return;    int start = 0;    while(columns>start*2 && rows>start*2)    {        PrintMatrixInCirclie(numbers,columns,rows,start);        ++start;    }    cout<<endl;}
原创粉丝点击