AcWing 1853. 建立大门
原题链接
简单
作者:
czh2012
,
2023-07-16 15:12:51
,
所有人可见
,
阅读 97
#include<bits/stdc++.h>
using namespace std;
char a[1005];
int n,tot,ans[2999][2999],cz[2999][2999][4],dx[5]={0,0,-1,0,1};
int dy[5]={0,1,0,-1,0};
bool flag[2999];
map<char,int> q;
int main()
{
memset(ans,0,sizeof (ans));
memset(flag,0,sizeof (flag));
q['N']=1;q['W']=2;q['S']=3;q['E']=4;
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
int x=1500,y=1500;
ans[x][y]++;
for(int i=1;i<=n;i++){
int num=q[a[i]];
ans[x+dx[num]][y+dy[num]]++;
x+=dx[num];y+=dy[num];
if((!cz[x][y][num])&&(ans[x][y]>1))tot++;
cz[x][y][num]=1;
if(num>2) cz[x-dx[num]][y-dy[num]][num-2]=1;
else cz[x-dx[num]][y-dy[num]][num+2]=1;
}
cout<<tot;
return 0;
}
mapyyds