首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >机器人

机器人

作者头像
且陶陶
发布2023-04-12 14:43:52
发布2023-04-12 14:43:52
56400
代码可运行
举报
文章被收录于专栏:Triciaの小世界Triciaの小世界
运行总次数:0
代码可运行

题目描述

蒜头君收到了一份礼物,是一个最新版的机器人。

这个机器人有 44 种指令:

forward x,前进 xx 米。

back x,先向后转,然后前进 xx 米。

left x,先向左转,然后前进 xx 米。

right x,先向右转,然后前进 xx 米。

现在把机器人放在坐标轴原点,起始朝向为 xx 轴正方向。

经过一系列指令以后,你能告诉蒜头君机器人的坐标位置吗。

输入格式

第一行输入一个整数 n(1≤n≤100)n(1≤n≤100) 表示指令的个数。

接下里 n行,每行输入形如上面的指令,其中 −1000≤x≤1000−1000≤x≤1000。

输出格式

输出两个整数 x,yx,y 表示机器人最后坐标。

用空格隔开。

样例输入
代码语言:javascript
代码运行次数:0
运行
复制
10

back -9

left 3

left 8

back 15

right 10

right -7

right -3

left 11

right 17

left 3
样例输出
代码语言:javascript
代码运行次数:0
运行
复制
9 -7

解析:

这道题的关键就是每一次的转向都是在上一次的基础上来判断的,可以用head来记录方向。顺时针:head = 1表示向前,2表示向下,3表示向后,0表示向上。 举例:比如head初始化为1,机器人先向前再向左再向右,如图——>

head变化过程: head = 1; head = 0; head = 1; 由图可以看出,先是x = x+b,然后y = y+b;再然后x = x+b;

代码

代码语言:javascript
代码运行次数:0
运行
复制
#include <iostream>
using namespace std;


int main()
{
    int x,y,n;
    int head = 1;
    x = 0;
    y = 0;
    cin>>n;
    while(n--){
        string s;
        int b;
        cin>>s>>b;
        if(s[0] == 'f'){
            head = (head += 0)%4; 
        }
        if(s[0] == 'b'){
            head = (head += 2)%4; 
        }
        if(s[0] == 'l'){
            head = (head += 3)%4; 
        }
        if(s[0] == 'r'){
            head = (head += 1)%4; 
        }
        if(head == 0){
            y+=b;
        }
        if(head == 1){
            x+=b;
        }
        if(head == 2){
            y-=b;
        }
        if(head == 3){
            x-=b;
        }
    }
    cout<<x<<" "<<y;
    return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-03-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目描述
  • 输入格式
  • 输出格式
    • 样例输入
    • 样例输出
  • 解析:
  • 代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档