1006 幸运52

// 寻找宝藏
#include < iostream >
using   namespace  std;
int  x[ 11 ];
int  y[ 11 ];
ExpandedBlockStart.gifContractedBlock.gif
int  main() {
    
int n;
    
char dic;//方向 
    int des;//距离 
    int tx,ty;
ExpandedSubBlockStart.gifContractedSubBlock.gif    
while(cin>>n){
        x[
0]=y[0]=0;
ExpandedSubBlockStart.gifContractedSubBlock.gif        
for(int i=1;i<=n;i++){
            cin
>>dic>>des;
ExpandedSubBlockStart.gifContractedSubBlock.gif            
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;//有地雷? 
ExpandedSubBlockStart.gifContractedSubBlock.gif
        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

转载于:https://www.cnblogs.com/chhlgy/archive/2008/07/26/1251857.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值