顺时针打印矩阵

来源:互联网 发布:淘宝店主照片认证 编辑:程序博客网 时间:2024/05/22 13:33

/*
面试题20:顺时针打印矩阵
*/

void PrintNumber(int number){    printf("%d ",number);}//一步一步打印矩阵void PrintMatixInCircle(int** numbers,int columns,int rows,int start){    int endX = columns-1-start;    int endY = columns-1-start; //从左到右打印一行    for(int i = start;i<=endX;i++)    {        int number = numbers[start][i];        PrintNumber(number);    }    //从上到下打印一列    if(start<endY)    {        for(int i = start+1;i<=endY;i++)        {            int  number = numbers[i][endX];            PrintNumber(number);        }    }    //从右到左打印一行    if(start<endX &&start<endY)    {        for(int i = endX-1;i>=start;--i)        {            int number = numbers[endY][i];            PrintNumber(number);        }    }    //从下到上打印一列    if(start<endX &&start<endY-1)    {        for(int i = endY-1;i>=start+1;--i)        {            int number = numbers[i][start];            PrintNumber(number);        }    }}//打印矩阵void PrintMatrixClockwisely(int** numbers,int columns,int rows){    if(numbers == 0||columns<0||rows == 0)        return ;    int start = 0;    while(columns>start*2 && rows>start*2)    {        PrintMatixInCircle(numbers,columns,rows,start);        ++start;    }}int main(){    int Matrix[4][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};     int **p = new int*[4];      for (int i=0; i<4; i++)      {          p[i] = Matrix[i];      }      PrintMatrixClockwisely(p,4,4);    return 0;}