UVA12503

· · 题解

思路

每次输入玩 n 之后,n 次循环,判断一下 s[0]如果是 L,就让存储位置的变量减一,a_{i} 等于 -1;如果是 R,就让存储位置的变量加1,a_{i} 等于 1;如果是 S,就先把后面的 AS 读进来,然后再读一个变量 p,让存储位置的变量加上 a_{p}a_{i} 等于 a_{p}

代码


#include <iostream>
#include <cmath>
#include <string>
#include <algorithm>
using namespace std;

int main(){
    int t;
    cin>>t;
    while(t--){
        int sum=0,a[105],n,p;
        cin>>n;
        for(int i=1;i<=n;++i){
            string s;
            cin>>s;
            switch(s[0]){
                case 'L':{
                    --sum;
                    a[i]=-1;
                    break;
                }
                case 'R':{
                    ++sum;
                    a[i]=1;
                    break;
                }
                case 'S':{
                    cin>>s;
                    cin>>p;
                    sum+=a[p];
                    a[i]=a[p];
                    break;
                }
            }
        }
        cout<<sum<<endl;
    }
    return 0;
}