C++ 解题:方向转动游戏 - 统计面向北方的次数
C++ 解题:方向转动游戏 - 统计面向北方的次数
题目描述
小明自认为方向感很好,请小红来测试。小红先让小明面对'东'方立正站好,然后发出 '向左转'、'向右转' 或 '向后转' 的命令。每个命令执行后,小明都正确地说出了他面对的方向。 命令是以数字方式表达:$0$ 代表 '向右转',$1$ 代表 '向左转',$2$ 代表 '向后转'。
输入格式
从标准输入读入数据。 输入共两行。第一行是一个正整数 $n$($1\le n\le 10,000$),代表命令的条数;第二行是 $n$ 个整数,每个整数是 $0$、$1$ 或 $2$,代表小红发出的口令。
输出格式
输出到标准输出。 一个整数,代表小明回答 '北' 的次数。
样例 #1
样例输入 #1
5
0 1 0 0 1
样例输出 #1
0
提示
子任务
对于 $30%$ 的数据,$n\le10$; 对于 $50%$ 的数据,$n\le100$; 对于 $70%$ 的数据,$n\le1,000$; 对于 $100%$ 的数据,$n\le10,000$。 特别地,对于其中 $20%$ 的数据,小红发出的命令仅有一种。
#include <iostream>
using namespace std;
const char* dir[4] = {"北", "东", "南", "西"}; // 方向数组
int main() {
int n, d = 1; // d表示当前方向,初始为1表示面对东方
cin >> n;
while (n--) {
int t;
cin >> t;
d = (d + (t == 0 ? 1 : t == 1 ? 3 : 2)) % 4; // 根据转向指令更新当前方向
}
int ans = 0;
for (int i = 0; i < 4; i++)
if (dir[i] == "北" && i == d) // 统计面对北方的次数
ans++;
printf("%d\n", ans);
return 0;
}
原文地址: https://www.cveoy.top/t/topic/knrH 著作权归作者所有。请勿转载和采集!