zoukankan      html  css  js  c++  java
  • Rikka with Parenthesis II---hdu5831(括号匹配)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5831

    给你一个只包含‘(’‘)’的字符串,然后让我们交换两个字符一次,问是否能得到一个合法的匹配;必须要交换一次,而且只能交换一次;

    () No

    ))(( Yes这两个是比较特殊的注意一下;

    可以把串中的第一个')'和最后一个'('交换一下,然后判断是否合法即可;

    #include<iostream>
    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    #include<math.h>
    #include<stack>
    using namespace std;
    
    #define INF 0xfffffff
    #define N 100050
    typedef long long LL;
    
    int n;
    char s[N];
    
    int Judge()
    {
        stack<char>sta;
    
        for(int i=0; i<n; i++)
        {
            if(s[i] == '(')
                sta.push(s[i]);
            else
            {
                if(!sta.empty())
                    sta.pop();
                else
                    return 0;
            }
        }
    
        if(!sta.empty())
            return 0;
        return 1;
    }
    
    int main()
    {
        int T;
        scanf("%d", &T);
        while(T--)
        {
            scanf("%d", &n);
    
            scanf("%s", s);
    
            int Index1 = -1, Index2 = -1;
    
            for(int i=0; i<n; i++)
            {
                if(Index1 == -1 && s[i] == ')')
                    Index1 = i;
                if(s[i]=='(')
                    Index2 = i;
            }
    
            swap(s[Index1], s[Index2]);
    
            if(Judge()) puts("Yes");
            else puts("No");
        }
        return 0;
    }
    View Code
  • 相关阅读:
    JZOJ 5870 地图
    20190921
    20190919
    SP703 SERVICE
    UVA323 Jury Compromise
    [note]一类位运算求最值问题
    [BZOJ3674]可持久化并查集
    [luogu3359]改造异或树
    [luogu4755]Beautiful Pair
    [BJWC2012]冻结
  • 原文地址:https://www.cnblogs.com/zhengguiping--9876/p/5763637.html
Copyright © 2011-2022 走看看