找规律
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int a[20][20],vis[20][20];
int main()
{
int n,T,ans;
int i,j;
cin>>T;
while(T--)
{
cin>>n;
memset(vis,0,sizeof(int)*400);
ans=1;
i=1,j=(n+1)/2;
while(ans != n*n+1)
{
a[i][j]=ans;
vis[i][j]=1;
if(i==1&&j<n){i=n; j++;}
else if(i==1&&j==n){i++;}
else if(i!=1&&j==n){i--;j=1;}
else {if(vis[i-1][j+1]==0){i--;j++;}
else {i++;}
}
ans++;
}
//output
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
if(j!=n)printf("%4d",a[i][j]);
else printf("%4d\n",a[i][j]);
}
}
return 0;
}