#include <iostream>
using namespace std;
const int N = 6;
int p[N][N];
void fill(int n,int begin,int size){
if(size==0) return;//边界条件
if(size==1) {
p[begin][begin] = n;
return;
}
int h = begin,v = begin;
p[h][v] = n++;//先将左上角填写好
for(int i = 0; i < size-1; i++){//向下填写
h++;
p[h][v] = n++;
}
for(int i = 0; i < size-1; i++){//向右填写
v++;
p[h][v] = n++;
}
for(int i = 0; i < size-1; i++){//向上填写
h--;
p[h][v] = n++;
}
for(int i = 0; i < size-2; i++){//向左填写,注意此时填写的数量为size-2
v--;
p[h][v] = n++;
}
fill(n,v,size-2);//递归填写中心区域
}
int main(){
fill(1,0,N);
for(int i = 0; i < N; i++){
for(int j = 0; j < N; j++){
cout<<p[i][j]<<'\t';
}
cout<<"\n";
}
return 0;
}