hdu 5831 (Rikka with Parenthesis II)

来源:互联网 发布:免谷歌软件下载商店 编辑:程序博客网 时间:2024/05/21 07:13

hdu 5831 (Rikka with Parenthesis II)

先说一下题意:
包含T组测试,给出一串字符串,长度为n,其中只有‘(’或‘)’;要求是交换两个不同位置的括号一次使得所有括号成对应。例如交换后变成“(())“,“()()“,而“)(“非法。

这道题我就傻傻地枚举了各种情况其实情况也不多,我在这里一 一枚举一下:1、左右括号数不相等,No2、如果')'有超过三次不能配对,No (这是重点)3、只有两个括号需要特判(Yes/No)如果上面的关卡都通过,那么恭喜你Yes
#include <cstdio>#include <cstring>const int maxn = 1000005;char ss[maxn];int n;int main(){    int tt;    scanf("%d",&tt);    int lr;    while(tt--){        int flag = 0;        lr = 0;        scanf("%d",&n);        scanf("%s",ss);        for(int i = 0; i < n; i++){            if(ss[i] == ')') lr++;            else (lr--);            if(lr >= 3) flag = 1;        }        if(flag) {printf("No\n");continue;}        if(lr != 0) {printf("No\n");continue;}        if(n == 2 && ss[0] == '(' && ss[1] == ')'        {printf("No\n");continue;}        printf("Yes\n");    }}
1 0
原创粉丝点击