题目参考<算法竞赛入门经典>第二版第三章 3.1
1 #include <stdio.h> 2 #include <string.h> 3 4 #define N 20 5 int a[N][N]; 6 int main(int argc, char **argv){ 7 int n; 8 while(scanf("%d",&n)!=EOF){ 9 memset(a, 0, sizeof(a)); 10 int tol = 1; 11 int x, y; 12 x = -1; 13 y = n; 14 while(tol<=n*n){ 15 x++; 16 y--; 17 while( x < n && a[x][y] == 0){ 18 a[x++][y] = tol++; 19 }// x = n y = n-1 20 x--; 21 y--; 22 while(y >= 0 && a[x][y] == 0){ 23 a[x][y--] = tol++; 24 } 25 x--; 26 y++; 27 while(x >= 0 && a[x][y] == 0){ 28 a[x--][y] = tol++; 29 } 30 x++; 31 y++; 32 while( y < n && a[x][y] == 0){ 33 a[x][y++] = tol++; 34 } 35 } 36 for(int i=0; i<n;i++){ 37 for(int j=0;j<n;j++){ 38 printf("%3d ",a[i][j]); 39 } 40 printf("\n"); 41 } 42 } 43 return 0; 44 }
来源:https://www.cnblogs.com/yongjiuzhizhen/p/5917982.html