和Leetcode 54. 螺旋矩阵类似
class Solution {
public:
int dx[4]={0,1,0,-1},dy[4]={1,0,-1,0},f=0;
vector<vector<int>> generateMatrix(int n) {
vector<vector<int>> ans(n, vector<int>(n,0));
int cnt=0,x=0,y=0;
while(++cnt!=n*n+1){
ans[x][y]=cnt;
int nx=x+dx[f],ny=y+dy[f];
if(!(nx>=0&&nx<n && ny>=0 && ny<n && ans[nx][ny]==0))
f=(f+1)&3;
x+=dx[f],y+=dy[f];
}
return ans;
}
};