#include <stdio.h>
int main() {
int n,i,j;
scanf("%d",&n);
int arr[n][n],n1 = n/2;
int left = n-1,right = n-1,up = n-1,down = n-1;
int x = 1;
while(n1--){
for(j = n-1-right; j < right; j++)
arr[n-1-right][j] = x++;
right--;
for(i = n-1-down; i < down; i++)
arr[i][down] = x++;
down--;
for(j = left; j > n-1-left; j--)
arr[left][j] = x++;
left--;
for(i = up; i > n-1-up; i--)
arr[i][n-1-up] = x++;
up--;
}
if(n%2 == 1)
arr[n/2][n/2] = n*n;
for(i = 0; i < n; i++){
for(j = 0; j < n; j++)
printf("%d ",arr[i][j]);
printf("\n");
}
return 0;
}
还有哪里可以优化的吗各位大佬,尽力了

京公网安备 11010502036488号