题目:Broken Keyboard (a.k.a. Beiju Text)
题意:略。
思路:链表。
代码:
#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<vector>
#include<set>
#include<map>
#include<algorithm>
#include<cmath>
#include<queue>
#include<stack>
#include<deque>
using namespace std;
struct list{
int front,back;
char x;
};
vector<list> vec;
int add=0,last=0;
int main() {
string str;
while(getline(cin,str)){
add=0,last=0;
vec.clear();
list init;
init.x='@';
init.front=-1;
init.back=-1;
vec.push_back(init);
for(int i=0;i<str.size();i++){
if(str[i]=='['){
add=0;
} else if(str[i]==']'){
add=last;
}else{
list x;
x.x=str[i];
x.front=add;
x.back=vec[add].back;
vec.push_back(x);
vec[add].back=vec.size()-1;
if(x.back==-1) last=vec.size()-1;
add=vec.size()-1;
}
}
int now=0;
for(;;){
now=vec[now].back;
if(now==-1) break;
printf("%c",vec[now].x);
}
printf("\n");
}
return 0;
}