螺旋矩阵2
*不清楚为什么malloc分配的动态数组为什么初值全是0
#include <stdio.h>
#include <stdlib.h>
int main() {
int n, **arr;
scanf("%d", &n);
arr = (int **)malloc(n * (sizeof(int *)));
for (int k = 0; k < n; k++)
arr[k] = (int *)malloc(n * (sizeof(int)));
/*for (int a = 0; a < n; a++)
for (int b = 0; b < n; b++)
arr[a][b] = 0;*/
int i = 0, j = 0, c;
c = arr[i][j] = 1;
while (c < n * n) {
while (j < n - 1 && !arr[i][j + 1])
arr[i][++j] = ++c;
while (i < n - 1 && !arr[i + 1][j])
arr[++i][j] = ++c;
while (j > 0 && !arr[i][j - 1])
arr[i][--j] = ++c;
while (i > 0 && !arr[i - 1][j])
arr[--i][j] = ++c;
}
for (int a = 0; a < n; a++) {
for (int b = 0; b < n; b++)
printf("%4d", arr[a][b]);
printf("\n");
}
for (int k = 0; k < n; k++)
free(arr[k]);
free(arr);
return 0;
}