1006 幸运52
//寻找宝藏
#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和SS一天碰到一起,他们想比一比谁的运气好,于是他们相处了一个游戏。游戏是这样的,比如说xian画一张由‘N’,‘S’,‘W’,‘E’ (‘N’向上走,‘S’向下走,‘W’向左走,‘E’向右走)组成的图,然后xian会告诉ss图有M行N列,ss说出一个坐标,xian会从那个坐标开始走,如果碰到‘#’(图的外围都由‘#’组成),输出no,如果可构成循环,输出yes。
例:xian画了一张6行8列的图,如下
########
#ESEEEE#
#ESWWEE#
#ESENEE#
#EEENEE#
######## (图的左上角为坐标原点,第一横行为Y轴,向右为正方向,第1列为X轴,向下为正方向)
ss会说出一个坐标,例如(1,2),则构成一个循环,(1,3)则要撞墙。
输入
第一行输入两个整数数M,N(M<=20,N<=20),表示图有M行N列。第二行在输入两个整数m,n(0<m<M-1,0<n<N-1),表示开始出发的坐标。最后输入(M,N)的图。当M==0,n==0结束。
输出
如果碰到墙壁(‘#’),输出 no.如果为循环,输出yes.
样例输入
6 8
1 2
########
#ESEEEE#
#ESWWEE#
#ESENEE#
#EEENEE#
########
6 8
1 3
########
#ESEEEE#
#ESWWEE#
#ESENEE#
#EEENEE#
########
0
样例输出
yes
no
逍遥地羊啊。。。。



浙公网安备 33010602011771号