1067-蠢蠢机器人I

该博客主要讨论了一个关于机器人在数轴上执行指令的问题。机器人根据LEFT、RIGHT和SAMEASi指令移动,输入包括多组数据,每组数据包含指令数量及具体指令。通过对指令的解析和状态数组的更新,可以预测机器人执行所有指令后的最终位置。博客中提供了详细的解题思路和代码实现,包括如何处理SAMEASi指令,以及如何输出机器人的最终位置。
摘要由CSDN通过智能技术生成

题目描述:
数轴原点有一个蠢蠢机器人。该机器人将执行一系列指令,你的任务是预测所有指令执行完毕之后它的位置。
·LEFT:往左移动一个单位
·RIGHT: 往右移动一个单位
·SAME AS i: 和第i 条执行相同的动作。输入保证i 是一个正整数,且不超过之前执行指令数
输入:
输入第一行为数据组数T (T<=100)。每组数据第一行为整数n (1<=n<=100),即指令条数。以下每行一条指令。指令按照输入顺序编号为1~n。
输出:
对于每组数据,输出机器人的最终位置。每处理完一组数据,机器人应复位到数轴原点。
样例输入:
2
3
LEFT
RIGHT
SAME AS 2
5
LEFT
SAME AS 1
SAME AS 2
SAME AS 1
SAME AS 4
样例输出:
1
-5
解题思路:首先数据是多组输入,我们就先定义一个变量来接收输入int T(因为它的数据范围不大要求(T<=100),故 定义int即可),后面是多组输入我们可以用while(T- -)来处理,这里我定义一个状态数组val[200]来保存位置状态。每次接收到字符串只要看字符串第一个位置的字符s[0]便可以判断输入数据的类型,然后分情况讨论
下面看代码:

#include<bits/stdc++.h> 					///万能头文件
using namespace std;
char s[15];									///字符数组接收字符串
int val[105];								///状态数组,接收此时的位置状态
int main(){
    int T;									///接收输入数据的组数
    scanf("%d",&T);							
    while(T--){
        int n,sum=0;  						///n表示输入字符串的个数
        scanf("%d",&n);
        for(int i=1;i<=n;i++){
            scanf("%s",s); 					///输入n个字符串,注意字符串输入不要加‘&’
            if(s[0]=='L') val[i]=-1;		
            else if(s[0]=='R') val[i]=1;	///这两句代码是题意描述的
            else{							
                int x;						
                scanf("%s %d",s,&x);		///分别接收“same” 和 “x”
                val[i]=val[x];				///对“the same as x”的处理
            }
            sum+=val[i];					///将每一组的结果存储起来
        }
        printf("%d\n",sum);
    }
    return 0;
}
///else这里重点解释一下,有很多人这里不明白。除了LEFT,RIGHT这两种情况就是the same as x的情况,
///上面的s字符数组只会接受“the”这个字符串,因为字符串输入遇到空格就会停止(可以看一眼下面的图片)。
///下面利用s数组(这里重复利用了s数组,用它来反复接收输入的字符串)再来接收“same”这个字符串,
///用k来接收“i”(具体的数字)这样就利用字符串输入
///遇到空格就停止输入这个特性来完美解决这个问题

the same as x:解释称代码就是val[i]=val[x]。

下面看下字符串输入遇到空格就会停止的例子
在这里插入图片描述
这里输入的是“xia xia”但它只接收到“xia”就停止接收了,因为遇到了空格。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值