基本思路:
先存好,再输出;
代码如下:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;cin>>n;
int num=1,x=1,y=n,ans[100][100];
memset(ans,0,sizeof(ans));
ans[x][y]=num;
while(num<n*n)//没有等于,否则会造成死循环;
{
while(x+1<=n&&!ans[x+1][y]) ans[++x][y]=++num;
while(y-1>=1&&!ans[x][y-1]) ans[x][--y]=++num;
while(x-1>=1&&!ans[x-1][y]) ans[--x][y]=++num;
while(y+1<=n&&!ans[x][y+1]) ans[x][++y]=++num;
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
printf("%5d",ans[i][j]);
printf("\n");
}
return 0;
}