#include<stdio.h>
#include<string.h>
#include<malloc.h>
int main()
{
int n = 0;
scanf("%d",&n);
int**arr = (int**)calloc(n, sizeof(int*));
for (int i = 0; i < n; i++)
{
arr[i] = (int*)calloc(n, sizeof(int));
memset(arr[i], 0, sizeof(arr[i]));
}
arr[0][n / 2] = 1;
for (int i = 2; i <=n * n; i++)
{
int hang=0; int lie=0;
for (int h = 0; h<n; h++)
{
for (int l = 0; l < n; l++)
{
if (arr[h][l] == i - 1)
{
hang = h; lie = l;
break;
}
}
}
if (hang == 0 && lie != n-1)
{
arr[n-1][lie + 1] = i;
}
if (hang != 0 && lie == n-1)
{
arr[hang-1][0] = i;
}
if (hang == 0 && lie == n-1)
{
arr[hang + 1][lie] = i;
}
if (hang != 0 && lie != n-1)
{
if (arr[hang - 1][lie + 1] == 0)
{
arr[hang - 1][lie + 1] = i;
}
else
{
arr[hang + 1][lie] = i;
}
}
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
printf("%d ", arr[i][j]);
}
printf("%\n");
}
}
```c
vs上可以