请问这个回文方阵用基础的c语言怎么写

在一个 n×n 的方阵中,填入 1,2,3……n^2 个数,构成回文方阵

输入描述
输入一个 正整数 n, 占一行

输出描述
输出一个 nxn 的螺旋方阵,每行的数字之间用 1 个空格分开。

样例输入
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

img

#include<stdio.h>
int array[90][90];
int main()
{
    int n;
    scanf("%d",&n);
    int k = 1,x = 1,y = n-1,i,j;
    while(k<=n*n)
    {
        while(y<n&&!array[x][y+1]) array[x][++y] = k++;
        while(x<n&&!array[x+1][y]) array[++x][y] = k++;
        while(y>1&&!array[x][y-1]) array[x][--y] = k++;
        while(x>1&&!array[x-1][y]) array[--x][y] = k++;
    }
    for( i = 1; i <= n; i++)
    {
        for( j = 1; j <= n; j++)
            printf("%d ",array[i][j]);
        printf("\n");
    }
    return 0;
}

算法参考:https://blog.csdn.net/dghcs18/article/details/107344784

https://ask.csdn.net/questions/7619549?spm=1005.2026.3001.5635&utm_medium=distribute.pc_relevant_ask_down.none-task-ask-2~default~OPENSEARCH~Rate-8.pc_feed_download_top3ask&depth_1-utm_source=distribute.pc_relevant_ask_down.none-task-ask-2~default~OPENSEARCH~Rate-8.pc_feed_download_top3ask

把关键几个位置的数据搞清楚就好了,a[n-1,0]=1,a[n-1,n-1]=n,a[0,n-1]=2n-1,这样就变成n-1n-1的方阵了,设n-1=k,那么kk方阵的位置就是
b[0,k-1]=2n,b[0,0]=2n+k-1,b[0,k-1]=2n-1+2k-1,以此进行循环就可以得到需要的阵列