#include<cstdio>
#include<cstring>
int main() {
int num[20];
int numb[8][8];
int number;
memset(numb,0,sizeof(numb));
scanf("%d", &number);
for(int i = 0; i < 3; i++)
num[i] =number - 1;
int temp = number - 1;
int temp2 = number - 2;
int i, j;
for( i = 0, j = 3; i < temp ;i++) {
num[j++] = temp2;
num[j++] = temp2--;
}
numb[0][number - 1] = 1;
int row = number - 1, line = 0;
int n = 2;
for(i = 0;; i++) {
for(int k = 0; k < num[i];k++) {
numb[++line][row] = n++;
}
i++;
if(n == number * number + 1)
break;
for(int k = 0; k < num[i]; k++)
numb[line][--row] = n++;
i++;
if(n == number * number + 1)
break;
for(int k = 0; k < num[i]; k++)
numb[--line][row] = n++;
i++;
if(n == number * number + 1)
break;
for(int k = 0; k < num[i]; k++)
numb[line][++row] = n++;
if(n == number * number + 1)
break;
}
for(int i = 0; i < number; i++) {
for(int j = 0; j < number; j++)
printf(" %d",numb[i][j]);
printf("\n");
}
}
注意++的前置和后置,会改变的,慎用