题目链接:
lrj--p143。
1 #include2 #include 3 #include 4 const int maxn=100000+5; 5 int last,cur,nex[maxn]; 6 char s[maxn]; 7 int main() 8 { 9 while(scanf("%s",s+1)!=EOF)10 {11 int n=strlen(s+1);12 last=cur=0;13 nex[0]=0; //虚拟14 for(int i=1;i<=n;i++)15 {16 char ch=s[i];17 if(ch=='[') cur=0;18 else if(ch==']') cur=last;19 else {20 nex[i]=nex[cur];21 nex[cur]=i;22 if(last==cur) last=i;23 cur=i;24 }25 }26 for(int i=nex[0];i;i=nex[i])27 printf("%c",s[i]);28 printf("\n");29 }30 return 0;31 }