#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; }
还有哪里可以优化的吗各位大佬,尽力了