给定一个 n , 在 n ∗ n n * n n∗n 的方阵中填入 1 ,2, 3,……,n * n, 要求填成蛇形。
样例,n = 5 时 , 如下所示:
13 14 15 16
 
\,
1
12 23 24 17
 
\,
2
11 22 25 18
 
\,
3
10 21 20 19
 
\,
4
 
\,
9
 
\,
8
 
\,
7
  
\;
6
 
\,
5
int main() {
int n;
int a[101][101];
int sum;
int i, j;
while (scanf("%d", &n)) {
sum = 0;
int x = 0, y = n - 1;
memset(a, 0, sizeof(a));
a[x][y] = ++sum;
while (sum < n * n) {
//没下,左,上,右越界 && 要走的地方值为0
while (x + 1 < n && !a[x + 1][y]) {
a[++x][y] = ++sum;
}
while (y - 1 >= 0 && !a[x][y - 1]) {
a[x][--y] = ++sum;
}
while (x - 1 >= 0 && !a[x - 1][y]) {
a[--x][y] = ++sum;
}
while (y + 1 < n && !a[x][y + 1]) {
a[x][++y] = ++sum;
}
}
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
printf("%5d", a[i][j]);
}
printf("\n");
}
}
}