回形矩阵

回型矩阵:

输入一个数字n,输出n阶回型矩阵

例如:输入5

输出

1     2    3   4  5

16 17 18 19 6

15 24 25 20 7

14 23 22 21 8

13 12 11 10 9


分析思路:

回型矩阵最外圈一次是连着的,所以我们可以从最外圈赋值

首先从上面开始赋值 1  2 3 4 5

然后从右边开始赋值 6 7 。。。。

紧接着是下面和左边

依次进行,一圈一圈知道完成结果。

#include<stdio.h>

void Visit(int a[][100],int n)
{
    int p=0,q=n-1;
    int count=0;

    while(count<n*n)
    {
        for(int i=p;i<=q;i++)//从上面开始赋值
            a[p][i]=++count;

        for(int i=p+1;i<=q;i++)//从右边开始赋值
            a[i][q]=++count;

        for(int i=q-1;i>=p;i--)//从下面开始赋值
            a[q][i]=++count;

        for(int i=q-1;i>=p+1;i--)
            a[i][p]=++count;
            p++;
            q--;
    }


}

void Print(int a[][100],int n)
{
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
            printf("%2d ",a[i][j]);
        printf("\n");
    }
}

int main()
{
    int n,a[100][100];
    scanf("%d",&n);
    Visit(a,n);
    Print(a,n);
    return 0;
}



posted @ 2017-02-24 14:42  gaot  阅读(401)  评论(0编辑  收藏  举报