5-5 螺旋方阵 (10分)
所谓“螺旋方阵”,是指对任意给定的N,将1到N×N的数字从左上角第1个格子开始,按顺时针螺旋方向顺序填入N×N的方阵里。本题要求构造这样的螺旋方阵。
输入格式:
输入在一行中给出一个正整数N(<10)。
输出格式:
输出N×N的螺旋方阵。每行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
- 时间限制:400ms
- 内存限制:64MB
- 代码长度限制:16kB
- 判题程序:系统默认
- 作者:C课程组
- 单位:浙江大学
#include<stdio.h> int main() { int n,a[10][10]={0}; scanf("%d",&n); int i=1,j=0,h=1,l=1; int k=n; while(n>(k/2)) { while(j<n) { j++; a[i][j]=a[i][j-1]+1; } while(i<=n-1) { i++; a[i][j]=a[i-1][j]+1; } while(j>=h+1) { j--; a[i][j]=a[i][j+1]+1; } while(i>l+1) { i--; a[i][j]=a[i+1][j]+1; } n=n-1;h++;l++; } for(int m=1;m<=k;m++) for(int q=1;q<=k;q++) { printf("%3d",a[m][q]); if(q==k&&m!=k) printf("\n"); } return 0; }