看到网上一种指针的做法,感觉太厉害了,每次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