C++ 编程挑战:转向游戏 II

题目描述

小明自认为方向感很好,请小红来测试。小红先让小明面对'东'方立正站好,然后发出 '向左转'、'向右转' 或 '向后转' 的命令。每个命令执行后,小明都正确地说出了他面对的方向。 命令是以数字方式表达:0 代表 '向右转',1 代表 '向左转',2 代表 '向后转'。

输入格式

从标准输入读入数据。 输入共两行。第一行是一个正整数 n(1 ≤ n ≤ 10,000),代表命令的条数;第二行是 n 个整数,每个整数是 0、1 或 2,代表小红发出的口令。

输出格式

输出到标准输出。 一个整数,代表小明回答 '北' 的次数。

样例 #1

样例输入 #1

5
0 1 0 0 1

样例输出 #1

0

提示

子任务

对于 30% 的数据,n ≤ 10; 对于 50% 的数据,n ≤ 100; 对于 70% 的数据,n ≤ 1,000; 对于 100% 的数据,n ≤ 10,000。 特别地,对于其中 20% 的数据,小红发出的命令仅有一种。

C++ 代码

#include <iostream>
using namespace std;

int main() {
    int n, command, direction = 0; // direction: 0-东,1-南,2-西,3-北
    int northCount = 0;

    cin >> n;
    for (int i = 0; i < n; i++) {
        cin >> command;
        switch (command) {
            case 0: // 向右转
                direction = (direction + 1) % 4;
                break;
            case 1: // 向左转
                direction = (direction + 3) % 4;
                break;
            case 2: // 向后转
                direction = (direction + 2) % 4;
                break;
        }
        if (direction == 3) { // 面向北
            northCount++;
        }
    }
    cout << northCount << endl;
    return 0;
}
C++ 编程挑战:转向游戏 II - 计算小明面向北方次数

原文地址: https://www.cveoy.top/t/topic/knpz 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录