基本思路:
先存好,再输出;
代码如下:
#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("]",ans[i][j]); printf("\n"); } return 0; }