题目链接:
lrj--p143。
1 #include<cstdio> 2 #include<cstring> 3 #include<string> 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(" "); 29 } 30 return 0; 31 }