C++ 编程练习:转向游戏 II 解题思路与代码
转向游戏 II/n/n## 题目描述/n/n小明自认为方向感很好,请小红来测试。小红先让小明面对'东'方立正站好,然后发出 '向左转'、'向右转' 或 '向后转' 的命令。每个命令执行后,小明都正确地说出了他面对的方向。/n命令是以数字方式表达:$0$ 代表 '向右转',$1$ 代表 '向左转',$2$ 代表 '向后转'。/n/n## 输入格式/n/n从标准输入读入数据。/n输入共两行。第一行是一个正整数 $n$($1/le n/le 10,000$),代表命令的条数;第二行是 $n$ 个整数,每个整数是 $0$、$1$ 或 $2$,代表小红发出的口令。/n/n## 输出格式/n/n输出到标准输出。/n一个整数,代表小明回答 '北' 的次数。/n/n## 样例 #1/n/n### 样例输入 #1/n/n/n5/n0 1 0 0 1/n/n/n### 样例输出 #1/n/n/n0/n/n/n## C++ 代码/n/ncpp/n#include <cstdio>/n/nint main()/n{/n int n;/n scanf(/'%d/', &n);/n/n int dir = 0; // 初始方向为东/n while (n -- )/n {/n int x;/n scanf(/'%d/', &x);/n if (x == 0) dir ++ ; // 向右转/n else if (x == 1) dir += 3; // 向左转,等价于向右转三次/n else dir += 2; // 向后转,等价于向右转两次/n dir %= 4; // 对4取模,保证方向在0~3之间/n }/n/n printf(/'%d//n/', dir == 0 ? 1 : 0); // 如果方向是北,则输出1,否则输出0/n/n return 0;/n}/n/n/n代码解释:/n/n1. 方向表示: 使用变量 dir 表示小明当前面对的方向,初始值为 0 代表东方。/n2. 命令处理: 遍历每个命令,根据命令值进行转向操作:/n - 向右转:dir++/n - 向左转:dir += 3(等价于向右转三次)/n - 向后转:dir += 2(等价于向右转两次)/n3. 取模操作: 使用 dir %= 4 对方向值进行取模运算,保证方向值始终在 0 到 3 之间,分别对应东、南、西、北。/n4. 判断北方: 最终判断 dir 是否为 0,如果为 0 则代表小明面对北方,输出 1;否则输出 0。/n/n代码思路:/n/n该代码利用了循环和取模操作来模拟小明的转向过程。通过将每个方向用一个数字表示,并通过取模运算将方向值始终保持在 0 到 3 之间,代码简洁高效地实现了转向模拟。最终通过判断 dir 是否为 0 来确定小明是否面对北方。/n
原文地址: https://www.cveoy.top/t/topic/kne7 著作权归作者所有。请勿转载和采集!