题解 | #回型矩阵#

回型矩阵

https://www.nowcoder.com/practice/36d5dfddc22c4f5b88a5b2a9de7db343

#include <stdio.h>

void hui(int arr[20][20],int n)
{
    int i = 0;
    int j = 0;
    int k = n / 2;//圈数
    int m = 1;//输入
    int r = 0;//行
    int c = 0;//列
    while (k--)
    {
        for (j = c; j < n-c; j++)
        {
            arr[i][j] = m;
            m++;
        }
        j = n - c - 1;
        for (i = r + 1; i < n-r; i++)
        {
            arr[i][j] = m;
            m++;
        }
        i = n - r - 1;
        for (j = j - 1; j >=c; j--)
        {
            arr[i][j] = m;
            m++;
        }
        j = c;
        c++;
        for (i = i - 1; i >=r+1; i--)
        {
            arr[i][j] = m;
            m++;
        }
        r++;
        i = r;
    }
    if (n % 2 != 0)//奇数中间再补一个
    {
        arr[n / 2][n / 2] = m;
    }
}
int main()
{
    int n = 0;
    scanf("%d", &n);
    int arr[20][20];
    hui(arr, n);
    int i = 0;
    for (i = 0; i < n; i++)
    {
        int j = 0;
        for (j = 0; j < n; j++)
        {
            printf("%d ", arr[i][j]);
        }
        printf("\n");
    }

    return 0;
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务