好坑爹的一道字符串类型的模拟题,看来我就不适合做这种题,无论怎样简单,总会错几次才能对。
#include<cstdio> #include<cstring> using namespace std; int main() { int T; for(scanf("%d ",&T); T; T--) { char s[1000]; char ans[1000]; int st[1000]; gets(s); int len,i,j,num=0; for(i=j=0; s[i]; i++) { if(s[i]==' ') continue; else if(s[i]=='(') { if(j>0&&ans[j-1]!='+'&&ans[j-1]!='(') ans[j++]='(',st[num++]=1; else st[num++]=-1; } else if(s[i]==')') { if(st[num-1]==-1) num--; else if(ans[j-1]=='('||(j-2>=0&&ans[j-2]=='(')) { if(ans[j-1]=='(') j--; else ans[j-2]=ans[j-1],j--; num--; } else ans[j++]=')',num--; } else ans[j++]=s[i]; } ans[j]='\0'; puts(ans); } return 0; }