好坑爹的一道字符串类型的模拟题,看来我就不适合做这种题,无论怎样简单,总会错几次才能对。

#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;
}