C++ 解题:小明转向游戏II - 方向感测试

题目描述

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

输入格式

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

输出格式

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

样例 #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 表示东。

  • x0(向右转)时,y1,并对 4 取模,保证 y03 之间循环。
  • x1(向左转)时,y3,并对 4 取模,保证 y03 之间循环。
  • x2(向后转)时,y2,并对 4 取模,保证 y03 之间循环。

最后,根据 y 的值判断小明是否面向北方,并输出结果。

C++ 解题:小明转向游戏II - 方向感测试

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

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