#include <bits/stdc++.h>
using namespace std;
#define mr make_pair
#define fi first
#define se second
int n,m,x22,y22;
char str[1010];
int a[1010][1010];//只统计经过的点
struct point{
int x,y;
int num;//权值
int last;//几次没有走过
}p[1010];
map<char,pair<int,int> > mp;
int nx,ny;
int main()
{
scanf("%d%d%d%d",&n,&m,&y22,&x22);
nx=n-x22+1,ny=y22;
scanf("%s",str+1);
mp['N']=mr(-1,0);
mp['S']=mr(1,0);
mp['W']=mr(0,-1);
mp['E']=mr(0,1);//四个方向
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
a[i][j]=m*(m+1)/2;//初始化
}
}
for(int i=1;i<=m;i++)//枚举
{
p[i].x=nx,p[i].y=ny;
p[i].last=0;//清零
for(int j=1;j<=m;j++)
{
if(j==i)continue;
p[j].last++,p[j].num+=p[j].last;
}
nx+=mp[str[i]].fi;
ny+=mp[str[i]].se;//更新
}
for(int i=1;i<=m;i++)a[p[i].x][p[i].y]=p[i].num;//特殊点
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
return 0;
}
我的思路就是没有经过的点直接填上,经过的点统计有几次没有走过,结果全WA,想不明白...求助qwq