nyoj33

来源:互联网 发布:知乎 武林风 编辑:程序博客网 时间:2024/06/02 04:21

蛇形填数

时间限制:3000 ms  |  内存限制:65535 KB
难度:3
描述
在n*n方陈里填入1,2,...,n*n,要求填成蛇形。例如n=4时方陈为:
10 11 12 1
9 16 13 2
8 15 14 3
7 6 5 4
输入
直接输入方陈的维数,即n的值。(n<=100)
输出
输出结果是蛇形方陈。
样例输入
3
样例输出
7 8 16 9 25 4 3
来源
算法经典
上传者
首席执行官

开始做的时候一点思路都没有,后来才想起来

#include<stdio.h>int main(){    int n,m,i,j;    int a[101][101];    scanf("%d",&n);        m=0;        a[1][n]=1;        for(i=1; i<n; i++)        {            //向上走            for(j=m+1; j<=(n-m); j++)            {                if(j==1)                    a[1][n-m]=1;                else                    a[j][n-m]=a[j-1][n-m]+1;                //printf("%d %d %d\n",j,n-m,a[j][n-m]);            }            //向左走            for(j=n-m-1; j>m; j--)            {                a[n-m][j]=a[n-m][j+1]+1;                // printf("%d %d %d\n",n-m,j,a[n-m][j]);            }            //向上走            for(j=n-m-1; j>m; j--)            {                a[j][m+1]=a[j+1][m+1]+1;                // printf("%d %d %d\n",j,m+1,a[j][m+1]);            }            //向右走            for(j=m+2; j<n-m; j++)            {                a[m+1][j]=a[m+1][j-1]+1;                // printf("%d %d %d\n",m+1,j,a[m+1][j]);            }            m++;        }        for(i=1; i<=n; i++)        {            for(j=1; j<=n; j++)            {                if(j!=n)                    printf("%d ",a[i][j]);                else                    printf("%d\n",a[i][j]);            }        }}


0 0