分治的思想真有些神奇。。。
<span style="font-family:Courier New;font-size:18px;">#include <iostream>
using namespace std;
const int maxn=20;
int a[maxn][maxn];
void draw(int x,int y,int start,int size)
{
if(size<=0) return;
int t1=x,t2=y;
for(int i=x;i<t1+size-1;i++){
a[i][y]=start;
start++;
}
x=t1+size-1;
for(int j=y;j<t2+size-1;j++) {
a[x][j]=start;
start++;
}
y=t2+size-1;
for(int i=x;i>t1;i--) {
a[i][y]=start;
start++;
}
x=t1;
for(int j=y;j>t2;j--) {
a[x][j]=start;
start++;
}
x=t1+1;
y=t2+1;
draw(x,y,start,size-2);
}
int main()
{
int n;
cin>>n;
draw(0,0,1,n);
for(int i=0;i<n;i++) {
for(int j=0;j<n;j++) {
cout<<a[i][j]<<" ";
}
cout<<endl;
}
return 0;
}</span>