hdu5831

题意:问交换两个位置能否使这些括号匹配;

复制航神代码,类似于递归思想

#define N (1<<17)
#include <bits/stdc++.h>

using namespace std;

int T,n;
char s[N];

int main()
{
    for(cin>>T;T--;)
    {
        int cur=0,mx=N,res=0;
        scanf("%d%s",&n,s);
        for(int i=0;i<n;i++)
            cur+=s[i]=='('?1:-1,mx=min(mx,cur);
        if(n==2) res=cur==0&&mx<0;
        else res=cur==0&&mx>=-2;
        puts(res?"Yes":"No");

    }
    return 0;
}
原文地址:https://www.cnblogs.com/shimu/p/5762335.html