寻找宝藏
//寻找宝藏
#include<iostream>
using namespace std;
int x[11];
int y[11];
int main(){
int n;
char dic;//方向
int des;//距离
int tx,ty;
while(cin>>n){
x[0]=y[0]=0;
for(int i=1;i<=n;i++){
cin>>dic>>des;
switch(dic){
case 'E'://东 x 加, y不变
x[i]=x[i-1]+des;
y[i]=y[i-1];
break;
case 'N'://北 y 加, x不变
x[i]=x[i-1];
y[i]=y[i-1]+des;
break;
case 'S':
x[i]=x[i-1];
y[i]=y[i-1]-des;
break;
default://W 其它为西
x[i]=x[i-1]-des;
y[i]=y[i-1];
break;
}
// cout<<" x:"<<x[i]<<" y:"<<y[i]<<endl;
}
cin>>tx>>ty;//地雷
bool has=false;//有地雷?
for(int i=1;i<=n;i++){
if(
(x[i]==tx&&x[i-1]==tx&&//x相等
((y[i]<=ty&&ty<=y[i-1])||(y[i]>=ty&&ty>=y[i-1])))//ty位于两个y之间
||
(y[i]==ty&&y[i-1]==ty&&//或y相等
((x[i]<=tx&&tx<=x[i-1])||(x[i]>=tx&&tx>=x[i-1])))//tx位于两个x之间
)//就是有雷
has=true;
}
if(has)
cout<<"No"<<endl;//不去了
else
cout<<"Yes"<<endl;//没雷就去
}
}
xian得到了一份藏宝图,图中写了一大串的字母和数字,暗藏这宝藏的坐标。xian研究了很久,终于明白了其中的奥秘。字母表示方向,字母后的数字表示向那个方向走几步。例如 E6,说明向东走6步(x坐标加6)。xian很高兴,终于可以找到宝藏了。但这时ss告诉他:在找宝藏的路上有致命的陷阱,并且ss已经找出了陷阱的坐标。xian想要宝藏,当他又不想死在路上,现在请你告诉他是去还是不去?
注:字母只有4个,分别是N(北),S(南),E(东),W(西),按地图上的方向为准。数字是正整数。xian的原来的位置坐标都是(0,0)。
输入
先输入n(n<10). 接着有n+1行,前n行每行由一个字母和一个数字组成,中间空格分开。最后一行有两个数字,表示陷阱的坐标。
输入以EOF结束。
输出
若陷阱在xian去寻宝的路上,则输出No,否则为Yes.
样例输入
4
N 6
E 3
E 2
W 1
7 7
3
E 7
S 2
W 1
6 0
样例输出
Yes
No
逍遥地羊啊。。。。



浙公网安备 33010602011771号