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;
}

 

转载于:https://www.cnblogs.com/striderdu/p/4983817.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值