题解 | #回型矩阵#

回型矩阵

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

#include <stdio.h>
#include <stdlib.h>
#define arr(i,j) *(arr+i*a+j)//数组元素表达式太长,写个宏简化一下
int main() {
    int a;
    scanf("%d", &a);
    int* arr=malloc(sizeof(int)*a*a);
    int i=0,j=0,count=1,left=0,right=a,top=0,bottom=a;
    while(count<=a*a)//这里面内容太烧脑,让我再写一遍都不一定能写出来
    {
        for(j=left;j<right;j++)
        {
            arr(i,j)=count++;
        }
        top++;
        j--;
        for(i=top;i<bottom;i++)
        {
            arr(i,j)=count++;
        }
        right--;
        i--;
        for(j=right-1;j>=left;j--)
        {
            arr(i,j)=count++;
        }
        bottom--;
        j++;
        for(i=bottom-1;i>=top;i--)
        {
            arr(i,j)=count++;
        }
        left++;
        i++;
    }
    for(i=0;i<a;i++)
    {
        for(j=0;j<a;j++)
        {
            printf("%d ",arr(i,j));
        }
        printf("\n");
    }
    free(arr);
    return 0;
}

全部评论

相关推荐

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