c++ c括号匹配问题

img


int main()
{                   
    int T=0;
    char str[100];
    scanf("%d",&T);
    char stack[25];
    int stack_top=-1;
    
    for(int i=0;i<T;++i)
    {
        scanf("%s",str);
        for(int j=0;j<strlen(str);++j)
        {
            if(stack_top==-1){
                stack[++stack_top]=str[j];
                continue;
            }
            if(stack[stack_top] == '(' && str[j]==')'){
                --stack_top;
                continue;
            }
            if(stack[stack_top] == '{' && str[j]=='}'){
                --stack_top;
                continue;
            }
            if(stack[stack_top] == '[' && str[j]==']'){
                --stack_top;
                continue;
            }
            stack[++stack_top]=str[j];
        }
        if(stack_top >= 0)
            printf("No\n");
        else
            printf("Yes\n");
    }
    
    return 0;    
}