zoukankan      html  css  js  c++  java
  • E-括号匹配(栈类的思想运用)

    题目链接:http://acm.csust.edu.cn/problem/3032

    Description

     

    众所周知,佳爷事集训队最强,他经常喜欢鄙视集训队最菜的PC,这天他又来了,他丢给PC一道题目:

    给你一个字符串,该字符串值包含符号 '(’ 和 ‘)', ,我们称那些左右括号可以一一对应的括号字符串为完美字符串,

    比如"()()()",  "((()))", "((()))()()", 都是完美字符串

    而"((())", "()(", "((()))()(" 不是完美字符串。

    这么难的题目,PC当然是不会写的,但他又不想被佳爷鄙视,所以他找到了你,聪明的ACMer啊,请你帮PC解出这题把

    Input

     

    第一行一个整数n,代表字符串的长度 n, 1 <= n <= 1e5

    第二行一串字符串s,只包含字符 '(' , ')'。

    Output

     

    如果该字符串是完美字符串,就输出YES,。否则输出NO

    Sample Input 1 

    4
    (())

    Sample Output 1

    YES

    Sample Input 2 

    5
    ((())

    Sample Output 2

    NO


    这个就是个简单的栈的理解运用,用sum记录一个数据,在遇到’(‘则加一,遇到’)’则减一,在从前往后扫描的过程中,sum始终不为负数,并且扫描完成后sum等于0输出YES即可。

    以下是AC代码:

    #include <bits/stdc++.h>
    using namespace std;
    
    const int mac=1e5+10;
    
    char s[mac];
    
    int main()
    {
        int n;
        scanf ("%d",&n);
        scanf ("%s",s+1);
        int sum=0;
        for (int i=1; i<=n; i++){
            if (s[i]=='(') sum++;
            else sum--;
            if (sum<0) {
                printf ("NO
    ");
                return 0;
            }
        }
        if (sum>0) printf ("NO
    ");
        else printf ("YES
    ");
        return 0;
    }
    路漫漫兮
  • 相关阅读:
    Maven项目类型和JAVASE项目和JAVAEE项目的关系
    使用faker 生成测试数据
    python 面向对象
    python csv读写
    分治
    django 部署
    js 时间格式转换
    python环境
    枚举
    递归
  • 原文地址:https://www.cnblogs.com/lonely-wind-/p/12003802.html
Copyright © 2011-2022 走看看