#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int x1,y1,x2,y2,n,sum=2e9,num[55];
int dx[5]={0,1,-1,0,0};
int dy[5]={0,0,0,-1,1};
char d[55][2];
void dfs(int x,int y,int ans,int i)
{
if(x==x2&&y==y2)
{
sum=min(sum,ans);
return;
}
if(i>n)return;
dfs(x,y,ans,i+1);
dfs(x+dx[num[i]],y+dy[num[i]],ans+1,i+1);
}
int main()
{
cin>>x1>>y1>>x2>>y2>>n;
for(int i=1;i<=n;i++){
cin >> d[i];
if(d[i][0]=='N')num[i]=4;
if(d[i][0]=='S')num[i]=3;
if(d[i][0]=='W')num[i]=2;
if(d[i][0]=='E')num[i]=1;
}
dfs(x1,y1,0,1);
if(sum<2e9)cout<<sum;
else cout<<-1;
}
by 只手摘星辰 @ 2019-08-01 19:43:56
希望更丰富的展现?使用Markdown
by zhjzhmh @ 2019-08-28 17:38:26
```cpp
#include<bits/stdc++.h>
using namespace std;
int x1,y3,x2,y2,n,sum=2e9,num[55];
int dx[5]={0,1,-1,0,0};
int dy[5]={0,0,0,-1,1};
char d[55][2];
void dfs(int x,int y,int ans,int i)
{
if(x==x2&&y==y2) {sum=min(sum,ans);return;}
if(i>n)return;
dfs(x,y,ans,i+1);
dfs(x+dx[num[i]],y+dy[num[i]],ans+1,i+1);
}
int main()
{
cin>>x1>>y3>>x2>>y2>>n;
for(int i=1;i<=n;i++)
{
cin>>d[i];
if(d[i][0]=='N') num[i]=4;
if(d[i][0]=='S') num[i]=3;
if(d[i][0]=='W') num[i]=2;
if(d[i][0]=='E') num[i]=1;
}
dfs(x1,y3,0,1);
if(sum<2e9)cout<<sum;
else cout<<-1;
}
```
大善人路过
by Hoks @ 2022-01-23 11:40:59