Problem J: 螺旋方阵
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 94 Solved: 56
[ Submit][ Status][ Web Board]
Description
以下是一个5*5阶螺旋方阵。设计一个程序,输出该形式的n*n阶方阵(顺时针方向旋进)。
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
Input
输入一个整数n,(n>=1&&n<=20)
Output
输出对应的n*n阶螺旋方阵。
Sample Input
5
Sample Output
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
#include<stdio.h> int s[20][20]; void revolve(int a,int b,int c,int d,int n) { int i; if(a<=b) { for(i=a;i<=b;i++) { n++; s[c][i]=n; } for(i=c+1;i<d;i++) { n++; s[i][b]=n; } for(i=b;i>a;i--) { n++; s[d][i]=n; } for(i=d;i>c;i--) { n++; s[i][a]=n; } revolve(a+1,b-1,c+1,d-1,n); } } int main() { int i,j,n; scanf("%d",&n); revolve(1,n,1,n,0); for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { printf("%5d",s[i][j]); } printf("\n"); } return 0; }