蛇形填数

蛇形填数

描述

在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 1

6 9 2

5 4 3

 

 1 #include<stdio.h>
 2 #include<string.h>
 3 #define manx 20
 4 int arr[manx][manx];
 5 int main()
 6 {
 7     int n = 0,temp = 1,x,y;
 8     scanf("%d",&n);
 9     memset(arr,0,sizeof(arr));
10     x=0;y=n-1;
11     arr[x][y] = 1;
12     while(temp<n*n)
13     {
14         while(x<n-1&&!arr[x+1][y]) arr[++x][y] = ++temp;
15         while(y>=1&&!arr[x][y-1]) arr[x][--y] = ++temp;
16         while(x>=1&&!arr[x-1][y]) arr[--x][y] = ++temp;
17         while(y<n-1&&!arr[x][y+1]) arr[x][++y] = ++temp;
18     }
19     for(int a=0;a<n;a++)
20         for(int b=0;b<n;b++)
21         {
22             printf("%d",arr[a][b]);
23             if(b!=n-1) printf(" ");
24             else printf("
");
25         }
26     return 0;
27 }

 蛇形填数