C++ 解题:小明转向游戏II - 方向感测试
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% 的数据,小红发出的命令仅有一种。
代码示例
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,x=0,y=1,cnt=0;
cin>>n;
while(n--){
cin>>x;
if(x==0)y++,y%=4;
if(x==1)y+=3,y%=4;
if(x==2)y+=2,y%=4;
}
if(y==0)cout<<0;
if(y==1)cout<<1;
if(y==2)cout<<0;
if(y==3)cout<<1;
return 0;
}
解题思路
代码中,使用 y 来表示小明面对的方向,初始值为 1 表示东。
- 当
x为0(向右转)时,y加1,并对4取模,保证y在0到3之间循环。 - 当
x为1(向左转)时,y加3,并对4取模,保证y在0到3之间循环。 - 当
x为2(向后转)时,y加2,并对4取模,保证y在0到3之间循环。
最后,根据 y 的值判断小明是否面向北方,并输出结果。
原文地址: https://www.cveoy.top/t/topic/knpj 著作权归作者所有。请勿转载和采集!