求助大佬
#include<cstdio>
using namespace std;
int n,m,x,y;
int map[60][60];
bool flag[60][60];
int cnt[110][4],cnt2[60][60],tot;
char a[1010];
int main(){
scanf("%d%d%d%d",&n,&m,&y,&x);
flag[x][y]=true;
int X=x,Y=y;
for(int i=1;i<=m;i++){
scanf("%c",&a[i]);
while(a[i]==' '||a[i]=='\n'||a[i]=='\r') scanf("%c",&a[i]);
if(a[i]=='N'){
flag[++x][y]=true;
}
else if(a[i]=='S'){
flag[--x][y]=true;
}
else if(a[i]=='E'){
flag[x][++y]=true;
}
else if(a[i]=='W'){
flag[x][--y]=true;
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(flag[i][j]){
cnt[++tot][1]=i;
cnt[tot][2]=j;
cnt[tot][0]=1;
cnt2[i][j]=tot;
}
}
}
int ans=m*(m+1)/2;
cnt[cnt2[X][Y]][0]=0;
for(int i=1;i<=m;i++){
for(int j=1;j<=tot;j++){
map[cnt[j][1]][cnt[j][2]]+=cnt[j][0];
cnt[j][0]++;
}
if(a[i]=='N') cnt[cnt2[++X][Y]][0]=0;
else if(a[i]=='S') cnt[cnt2[--X][Y]][0]=0;
else if(a[i]=='E') cnt[cnt2[X][++Y]][0]=0;
else if(a[i]=='W') cnt[cnt2[X][--Y]][0]=0;
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(flag[n-i+1][j]) printf("%d ",map[n-i+1][j]);
else printf("%d ",ans);
}
printf("\n");
}
}