题目描述
在一个遥远的数字王国里,小y是一位勇敢的探险者。她被邀请参加一个古老的数字迷宫游戏,这个迷宫由一列神秘的数字组成,每个数字都代表一个房间。小y站在迷宫的起点,也就是第一个房间,她需要根据一组指令来探索迷宫。
迷宫的规则如下:
L
代表左指令:如果小y在起点房间,向左移动将不会移动;否则,她会进入左边的房间。R
代表右指令:如果小y在终点房间,向右移动将不会移动;否则,她会进入右边的房间。
每当小y进行一个指令,她都会收集那个房间的宝藏分数,(包括没有移动的情况)。
现在请你根据数组和移动指令,输出最后的分数。
输入格式
第一行一个整数 𝑛n ,表示数组的长度。
第二行包含 𝑛n 个整数 𝑎𝑖ai ,表示第 𝑖i 个房间的宝藏分数。
第三行一个仅包含 'L'
和 'R'
的字符串 𝑆S ,表示移动指令。
1≤𝑛,𝑎𝑖,∣𝑆∣≤10001≤n,ai,∣S∣≤1000。
输出格式
输出一个整数,表示最后的得分。
输入数据 1
5
1 2 3 4 5
RRRL
输出数据 1
12
提示
小y 初始 在 第一个房间, 第一个房间的分 不累加 RRRL 第一次移动是R, 小y 走到了第二个房间,获得a[2] 的 2分 第二次移动是R, 小y 走到了第三个房间,获得a[3] 的 3分 第三次移动是R, 小y 走到了第四个房间,获得a[4] 的 4分 第四次移动是L, 小y向左走到了第三个房间,获得a[3]的3分 一共获得 2+3+4+3=12分
代码
#include<bits/stdc++.h>
using namespace std;
int a[1005];
int main(){
int n;
string s;
cin >> n;
for(int i = 1; i <= n; i++){
cin >> a[i];
}
cin >> s;
int cnt=1,sum=0;
int len=s.size();
for(int i= 0; i < len; i++){
if(s[i]=='L'){
if(cnt>1){
cnt--;
}
}else if(s[i]=='R'){
if(cnt<n){
cnt++;
}
}
sum+=a[cnt];
}
cout << sum;
return 0;
}
100 Accepted
# | 状态分数 | 耗时 | 内存占用 |
---|---|---|---|
#1 | Accepted20 | 1ms | 6.4 MiB |
#2 | Accepted20 | 2ms | 6.4 MiB |
#3 | Accepted20 | 2ms | 6.4 MiB |
#4 | Accepted20 | 2ms | 6.4 MiB |
#5 | Accepted20 | 2ms | 6.4 MiB |