n=1
1
n=2
1 2
4 3
n=3
1 2 3
8 9 4
7 6 5
…
#include<iostream>
using namespace std;
#define n 13//需要每次更改
int i,j,array[n][n];
void Sort(int value,int x,int flag)
{
if(x==1)
array[(n-1)/2][(n-1)/2]=n*n;
for(i=j=flag;j<n-flag;j++)//第上面一行
{
array[i][j]=value;value++;
}
for(i=1+flag,j=n-flag-1;i<n-flag;i++)//最右面一列
{
array[i][j]=value;value++;
}
for(i=n-flag-1,j=j-1;j>=flag;j--)//最下面一行
{
array[i][j]=value;value++;
}
for(i=i-1,j=flag;i>flag;i--)//最左边一列
{
array[i][j]=value;value++;
}
flag++;
if(x>2)
Sort(value,x-2,flag);
}
int main()
{
Sort(1,n,0);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
cout<<array[i][j]<<'\t';
if(j==n-1)
cout<<endl;
}
return 0;
}
结果:
n=10
n=13