测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A27725. 向左转(left.cpp) 问题描述老师正在操场上给同学们训练队列。 小明在队列中。开始的时候,小明面向正北站立。每次老师发出一个指令,小明都跟随指令行动。老师的指令可能是:向左转、向右转、向后转。每个指令的动作与平时我们体育课上的动作一致,具体的:向左转:1. 如果原来小明朝北,向左转后朝西;2. 如果原来小明朝南,向左转后朝东; 3. 如果原来小明朝西,向左转后朝南; 4. 如果原来小明朝东…

填空题 中等

题目描述

向左转(left.cpp) 

问题描述

老师正在操场上给同学们训练队列。 

小明在队列中。

开始的时候,小明面向正北站立。

每次老师发出一个指令,小明都跟随指令行动。

老师的指令可能是:向左转、向右转、向后转。每个指令的动作与平时我们体育课上的动作一致,具体的:

向左转:

1. 如果原来小明朝北,向左转后朝西;

2. 如果原来小明朝南,向左转后朝东; 

3. 如果原来小明朝西,向左转后朝南; 

4. 如果原来小明朝东,向左转后朝北。

向右转:

1. 如果原来小明朝北,向右转后朝东;

2. 如果原来小明朝南,向右转后朝西; 

3. 如果原来小明朝西,向右转后朝北;

4. 如果原来小明朝东,向右转后朝南。

向后转:

1. 如果原来小明朝北,向后转后朝南;

2. 如果原来小明朝南,向后转后朝北;

3. 如果原来小明朝西,向后转后朝东;

4. 如果原来小明朝东,向后转后朝西。

给定一连串的动作指令,请问所有指令执行完后,小明的方向朝哪?

输入格式

从文件 left.in 中输入数据。

输入第一行包含一个整数 n,表示命令的个数。

接下来 n 行,每行一个命令。

如果命令为 left,表示向左转。如果命令为 right,表示向右转。如果命令为 around,表示向后转。

输出格式

输出到文件 left.out 中。

输出一个大写字母,表示最终小明的朝向。如果最终朝北,输出 N。如果最终朝南,输出 S。如果最终朝西,输出 W。如果最终朝东,输出 E。

样例输入

4

left

left

right

around

样例输出

E

评测用例规模与约定

注意:以下规模是评测时输入数据一定会满足的限制,在你的程序中不需要对这些限制进行检查。对于所有评测用例,1 ≤ n ≤ 1000。

参考答案

#include <cstdio>  #include <iostream>  #include <string>  using namespace std;    int main()  {      freopen("left.in", "r", stdin);      freopen("left.out", "w", stdout);     int n;     cin >> n;     int dir = 0;     for (int i = 1; i <= n; i++)     {         string s;         cin >> s;         if (s == "left")         {             dir--;         }         else if (s == "right")         {             dir++;         }         else         {             dir += 2;         }         dir = (dir + 4) % 4;     }     if (dir == 0)     {         cout << "N" << endl;     }     else if (dir == 1)     {         cout << "E" << endl;     }     else if (dir == 2)     {         cout << "S" << endl;     }    else     {         cout << "W" << endl;     }     return 0; }
上一题 下一题