1112: 机器人的指令
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 1329 Solved: 462
[Submit][Status][Web Board]
Description
数轴原点有一个机器人。该机器人将执行一系列指令,你的任务是预测所有指令执行完毕之后它的位置。
·LEFT:往左移动一个单位
·RIGHT: 往右移动一个单位
·SAME AS i: 和第i 条执行相同的动作。输入保证i 是一个正整数,且不超过之前执行指令数
Input
输入第一行为数据组数T (T<=100)。每组数据第一行为整数n (1<=n<=100),即指令条数。以下每行一条指令。指令按照输入顺序编号为1~n。
Output
对于每组数据,输出机器人的最终位置。每处理完一组数据,机器人应复位到数轴原点。
Sample Input
2 3 LEFT RIGHT SAME AS 2 5 LEFT SAME AS 1 SAME AS 2 SAME AS 1 SAME AS 4
Sample Output
1 -5
HINT
Source
湖南省第八届大学生计算机程序设计竞赛
#include <iostream> #include <cstdio> #include <cstring> #include <cstdlib> #include <algorithm> using namespace std; struct node { char ch[50]; int num; }; node nodes[50]; int main() { int t,n; int sum,nums; scanf("%d",&t); getchar(); while(t--) { sum=0; scanf("%d",&n); getchar(); for(int i=1;i<=n;i++) { scanf("%s",nodes[i].ch); if(strcmp(nodes[i].ch,"LEFT")==0) nodes[i].num=-1; else if(strcmp(nodes[i].ch,"RIGHT")==0) nodes[i].num=1; else if(nodes[i].ch[0]=='S') { scanf("%s %d",nodes[i].ch,&nums); nodes[i].num=nodes[nums].num; } } for(int j=1;j<=n;j++) { sum+=nodes[j].num; } printf("%d ",sum); } return 0; }