这题感觉没什么好说的,考的思维,看出规律模拟即可。。不过发现dfy的代码写的比我好多了~~就把她的贴上来吧。

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int t,x,y,i,j,a[100][100],n,m;
    scanf("%d",&m);
    while(m--)
    {
        memset(a,0,sizeof(a));
        scanf("%d",&n);
        t=a[x=0][y=0]=1;
        while(t<n*n)
        {
            while(y+1<n&&!a[x][y+1])
                a[x][++y]=++t;
            while(x+1<n&&!a[x+1][y])
                a[++x][y]=++t;
            if(x+1==n&&y-1>=0)
                a[x][--y]=++t;
            while(x-1>=0&&!a[x-1][y])
                a[--x][y]=++t;
            while(y-1>=0&&!a[x][y-1])
                a[x][--y]=++t;
            if(y-1<0&&x+1<n)
                a[++x][y]=++t;
        }
        for(i=0; i<n; i++)
        {
            printf("%d",a[i][0]);
            for(j=1; j<n; j++)
                printf(" %d",a[i][j]);
            printf("\n");
        }
    }
    return 0;
}

发表评论

电子邮件地址不会被公开。

Post Navigation