数组-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 ", a[i][j]); 55 } 56 return 0; 57 }