题解 | #回型矩阵#
回型矩阵
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;
}

查看4道真题和解析