算法-打印 N*N 螺旋矩阵

关于这个算法,有很多版本,我自认为这个比容易理解。

 

Code:

int Matrix[20][20];

 

void Translate(int n)

{

    int i,j,count=0;

 

    memset(Matrix,0,sizeof(Matrix));

    Matrix[i=0][j=0]=++count;

 

    while(count<n*n)

    {

        while (j+1<n&&Matrix[i][j+1]==0)

        {

        Matrix[i][++j]=++count;

        }

        while (i+1<n&&Matrix[i+1][j]==0)

        {

        Matrix[++i][j]=++count;

        }

        while (j-1>=0&&Matrix[i][j-1]==0)

        {

        Matrix[i][--j]=++count;

        }

        while(i-1>=0&&Matrix[i-1][j]==0)

        {

        Matrix[--i][j]=++count;

        }

    }

}

 

void Output(int n)

{

Translate(n);

    int i,j;

    for (i=0;i<n;i++)

    {

        for (j=0;j<n;j++)

        {

            printf("%4d",Matrix[i][j]);

        }

        printf("\n");

    }

}

 
 
posted @ 2012-09-04 17:20  杨柳岸边  阅读(267)  评论(0)    收藏  举报