数组-13. 螺旋方阵

数组-13. 螺旋方阵(20)

时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard

所谓“螺旋方阵”,是指对任意给定的N,将1到N*N的数字从左上角第1个格子开始,按顺时针螺旋方向顺序填入NxN的方阵里。本题要求构造这样的螺旋方阵。

输入格式:

输入在一行中给出一个正整数N(<10)。

输出格式:

输出NxN的螺旋方阵。每行N个数字,每个数字占3位。

输入样例:
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 #include<stdio.h>
 2 #include<math.h>
 3 #include<stdlib.h>
 4 #include<string.h>
 5 int main()
 6 {
 7     int n, a[15][15];
 8     memset(a, 0, sizeof(a));
 9     scanf("%d", &n);
10     int i = 1, j = 1, k = 1;
11     while(k <= n * n)
12     {
13         while(j <= n)
14         {
15             if(!a[i][j])
16                 a[i][j++] = k++;
17             else
18                 break;
19         }
20         j--;
21         i++;
22         while(i <= n)
23         {
24             if(!a[i][j])
25                 a[i++][j] = k++;
26             else
27                 break;
28         }
29         i--;
30         j--;
31         while(j > 0)
32         {
33             if(!a[i][j])
34                 a[i][j--] = k++;
35             else
36                 break;
37         }
38         j++;
39         i--;
40         while(i > 0)
41         {
42             if(!a[i][j])
43                 a[i--][j] = k++;
44             else
45                 break;
46         }
47         i++;
48         j++;
49     }
50     for(i = 1; i <= n; i++)
51     {
52         for(j = 1; j < n; j++)
53             printf("%3d", a[i][j]);
54         printf("%3d\n", a[i][j]);
55     }
56     return 0;
57 }

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。