http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3947
Robot Instructions
You have a robot standing on the origin of x axis. The robot will be given some instructions. Your task is to predict its position after executing all the instructions.
- LEFT: move one unit left (decrease p by 1, where p is the position of the robot before moving)
- RIGHT: move one unit right (increase p by 1)
- SAME AS i: perform the same action as in the i-th instruction. It is guaranteed that i is a positive integer not greater than the number of instructions before this.
Input
The first line contains the number of test cases T ( T


Output
For each test case, print the final position of the robot. Note that after processing each test case, the robot should be reset to the origin.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
AC代码:
#include<iostream> #include<cstdio> #include<cstring> using namespace std; int now; char inst[110][7]; int b[110]; void s(int i) { switch(inst[i][0]) { case 'L': now--;break; case 'R': now++;break; case 'S': s(b[i]);break; } } int main() { int t,n,i; char x[5]; scanf("%d",&t); while(t--) { memset(b,0,sizeof(b)); now = 0; scanf("%d",&n); for(i = 1; i <= n; i++) { scanf("%s",&inst[i]); if(inst[i][0] == 'S') { scanf("%s",&x); scanf("%d",&b[i]); } s(i); } printf("%d ",now); } return 0; }