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