我的代码是这样的:
#include <bits/stdc++.h>
using namespace std;
int main() {
int n,m;
vector<vector<int> > v;
scanf("%d %d",&n,&m);
int c=1;
for (int i=0;i<n;++i) {
vector<int> nv;
for (int j=0;j<n;++j) {
nv.push_back(c);
++c;
}
v.push_back(nv);
}
int x,y,r,z;
for (int i=0;i<m;++i) {
scanf("%d %d %d %d",&x,&y,&r,&z);
x--;y--;
for (int j=0;j<r;++j) {
vector<vector<int> > v2=v;
if (z==0) {
int r1=x-r+j,c1=y-r+j,r1s=0,c1s=1;
int r2=x-r+j,c2=y+r-j,r2s=1,c2s=0;
for (int p=0;p<(r-j)*8;++p) {
v[r2][c2]=v2[r1][c1];
if (p==(r-j)*2) {
r1s=1;c1s=0;r2s=0;c2s=-1;
} else if (p==(r-j)*4) {
r1s=0;c1s=-1;r2s=-1;c2s=0;
} else if (p==(r-j)*6) {
r1s=-1;c1s=0;r2s=0;c2s=1;
}
r1+=r1s;c1+=c1s;r2+=r2s;c2+=c2s;
}
} else {
int r1=x-r+j,c1=y-r+j,r1s=1,c1s=0;
int r2=x-r+j,c2=y+r-j,r2s=0,c2s=-1;
for (int p=0;p<(r-j)*8;++p) {
v[r1][c1]=v2[r2][c2];
if (p==(r-j)*2) {
r1s=0;c1s=1;r2s=1;c2s=0;
} else if (p==(r-j)*4) {
r1s=-1;c1s=0;r2s=0;c2s=1;
} else if (p==(r-j)*6) {
r1s=0;c1s=-1;r2s=-1;c2s=0;
}
r1+=r1s;c1+=c1s;r2+=r2s;c2+=c2s;
}
}
}
}
for (int i=0;i<n;++i) {
for (int j=0;j<n;++j) {
printf("%d ",v[i][j]);
}
printf("\n");
}
return 0;
}
但是为什么会TLE呢??