T088 路痴

     因为0左1右,我们可以考虑将四个方向用四个相邻整数来代替。例如:d=0是南,d=1是东,开始面向南,如果输入一个0代表左转,那么d++,d=1代表面向东了;输入一个1代表右转,那么d--,d=-1,d<0了,我们可以加一步判断如果d<0就给d+4,因为4是一个周期,运算之后不会有影响,d>=0?d:d+4,d=3代表面向东,有同学会想,如果我一直右拐怎么办,不能无限制的定义东西南北吧。因为只有四个方向,0 1 2 3,我们可以利用取模运算,例如运算之后d=5,d%4=1,他还是面向东面的,问题得到解决

#include <stdio.h>

int main() 
{ 
    char fx[6];
    int n,i,d,j; 
    scanf("%s%d",fx,&n); 
    switch(fx[0])
    {  
        case 'S': d=0;
          break;
        case 'E': d=1;
          break; 
        case 'N': d=2;
          break;
        case 'W': d=3;
          break;
    } 
    for(i=0;i<n;i++)
    { 
        scanf("%d",&j);
        if(j==0) d++;
        else d--; 
    } 
    d%=4; 
    switch(d>=0?d:d+4)
    {  
        case 0: printf("South\n");
          break;
        case 1: printf("East\n");
          break;
        case 2: printf("North\n");
          break; 
        case 3: printf("West\n"); 
          break; 
    }   
    return 0;
}

 

posted @ 2015-11-21 15:29  striderdu  阅读(140)  评论(0编辑  收藏  举报