标签:
看到网上一种指针的做法,感觉太厉害了,每次cur指向当前的点,然后把需要输出的字符插到cur的后面,当然这样后面的[]里面的东西会先输出来
根据是 ‘[‘ 还是‘]‘改变 cur
具体自己好好想想
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; #define N 100005 char a[N]; int nest[N]; char ans[N]; int main() { int i,j,len; while(gets(a)) { int k,cur,last; k=cur=last=0; nest[0]=-1; for(i=0;a[i];i++) { if(a[i]=='[') cur=0; else if(a[i]==']') cur=last; else { k++; ans[k]=a[i]; nest[k]=nest[cur]; nest[cur]=k; cur=k; if(nest[k]==-1) last=k; } } int t=nest[0]; while(t!=-1) { printf("%c",ans[t]); t=nest[t]; } printf("\n"); } return 0; }
Uva11988 Broken Keyboard (a.k.a. Beiju Text)(就是先输出括号的字符)
标签:
原文地址:http://blog.csdn.net/u014737310/article/details/43238603