classSolution{public:vector<vector<int>>generateMatrix(intn){// IMPORTANT: Please reset any member data you declared, as
// the same Solution instance will be reused for each test case.
vector<vector<int>>ans(n);if(n==0){ans.clear();returnans;}int**map=newint*[n];for(inti=0;i<n;i++){map[i]=newint[n];}intval=1;intx=0;inty=0;intdir=1;// 1 右 2 下 3 左 4 上
intr1=-1;intr2=n;intl1=-1;intl2=n;while(true){map[x][y]=val;switch(dir){case1:y++;if(y==l2){dir=2;y--;x++;r1++;}break;case2:x++;if(x==r2){dir=3;x--;y--;l2--;}break;case3:y--;if(y==l1){dir=4;y++;x--;r2--;}break;case4:x--;if(x==r1){dir=1;x++;y++;l1++;}break;}if(val==n*n)break;val++;}for(inti=0;i<n;i++){vector<int>tmp(n);for(intj=0;j<n;j++){tmp[j]=map[i][j];}ans[i]=tmp;}returnans;}};