题目描述
给出起点和终点的坐标及接下来T个时刻的风向(东南西北),每次可以选择顺风偏移1个单位或者停在原地。求到达终点的最少时间。
如果无法偏移至终点,输出“-1”。
输入输出格式
输入格式:
第一行两个正整数x1,y1,表示小明所在位置。
第二行两个正整数x2,y2,表示小明想去的位置。
第三行一个整数T,表示T个时刻。
第四至第N+3行,每行一个字符,表示风向,即东南西北的英文单词的首字母。
输出格式:
最少走多少步。
输入输出样例
输入样例#1:
1 1 2 2 5 E N W W N
输出样例#1:
2
输入样例#2:
1 1 2 2 1 W
输出样例#2:
-1
输入样例#3:
1 1 2 2 3 W W W
输出样例#3:
-1
说明
样例1:向东走一步,向南走一步。
样例2、3:无法到达。
1<=T<=50
东:East
南:South
西:West
北:North
思路:
只要边输入边看这个方向是不是朝着终点。如果是,就动。否则就不动。
#include <iostream> using namespace std; int x,y,x1,y1,n,s=0; char a; int l=0; int main() { cin>>x>>y>>x1>>y1; cin>>n; if(x==x1&&y==y1){cout<<'0';return 0;} for(int i=1;i<=n;i++) { cin>>a; if(x1-x>0&&a=='E')x++,s++; else if(x1-x<0&&a=='W')x--,s++; if(y1-y>0&&a=='N')y++,s++; else if(y1-y<0&&a=='S')y--,s++; } if(x==x1&&y==y1)cout<<s; else cout<<"-1"; return 0; }