博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1067-蠢蠢机器人I
阅读量:270 次
发布时间:2019-03-01

本文共 1588 字,大约阅读时间需要 5 分钟。

题目描述:

数轴原点有一个蠢蠢机器人。该机器人将执行一系列指令,你的任务是预测所有指令执行完毕之后它的位置。
·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
///万能头文件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”就停止接收了,因为遇到了空格。

转载地址:http://nwjo.baihongyu.com/

你可能感兴趣的文章