南阳 33 蛇形填数

先判断,再填数;在很多情况下,最好在做一件事之前检查是不是可以做,而不是做完再后悔。
#include<stdio.h>
#include<string.h>
int main()
{
    int a[110][110];
    int n,m,i,j;
    scanf("%d",&n);
    memset(a,0,sizeof(a));
    m=a[i=0][j=n-1]=1;
    while(m<n*n)
    {
        while(i+1<n&&!a[i+1][j]) a[++i][j]=++m;
        while(j-1>=0&&!a[i][j-1]) a[i][--j]=++m;
       while(i-1>=0&&!a[i-1][j]) a[--i][j]=++m;
        while(j+1<n&&!a[i][j+1]) a[i][++j]=++m;
    }
    for(i=0;i<n;i++)
    {
    for(j=0;j<n-1;j++)
    printf("%d ",a[i][j]);
    printf("%d\n",a[i][j]);
    }
    return 0;
}

你可能感兴趣的:(南阳 33 蛇形填数)