`
cscoder
  • 浏览: 15928 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

ACM在线练习-括号配对问题

 
阅读更多

括号配对问题

描述
现在,有一行括号序列,请你检查这行括号是否配对。
输入
第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[","]","(",")"四种字符
输出
每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No
样例输入
3
[(])
(])
([[]()])
样例输出
No
No
Yes
思路:模拟栈进行操作
如果输入[,(则将它们入栈,当前输入字符如果是右括号且与紧邻上一个字符匹配,则将紧邻的上一个字符出栈,如果不匹配则括号序列出错.
如果进行的一系列匹配操作过程不出错,则最后栈为空,即是正确的括号序列.

#include<iostream>
using namespace std;
struct Stack
    {
        char str[100];
        int i;//入栈的编号
    };
int main()
{
    int N;
    char c;
    Stack stack;
    cin>>N;
    getchar();
    while(N)
    {
        stack.i=-1;
        while((c=getchar())!='\n')
        {
            if(c=='['||c=='(')
                stack.str[++stack.i]=c;
            else if((stack.str[stack.i]=='['&&c==']')||(stack.str[stack.i]=='('&&c==')'))
                stack.i--;
            else
                {
                    stack.i=0;
                    break;
                }
        }
        if(stack.i==-1)
        cout<<"yes"<<endl;
        else
        cout<<"no"<<endl;
        N--;
    }
    return 0;
}


描述
现在,有一行括号序列,请你检查这行括号是否配对。
输入
第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[","]","(",")"四种字符
输出
每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No
样例输入
3
[(])
(])
([[]()])
样例输出
No
No
Yes
思路:模拟栈进行操作
如果输入[,(则将它们入栈,当前输入字符如果是右括号且与紧邻上一个字符匹配,则将紧邻的上一个字符出栈,如果不匹配则括号序列出错.
如果进行的一系列匹配操作过程不出错,则最后栈为空,即是正确的括号序列.

#include<iostream>
using namespace std;
struct Stack
    {
        char str[100];
        int i;//入栈的编号
    };
int main()
{
    int N;
    char c;
    Stack stack;
    cin>>N;
    getchar();
    while(N)
    {
        stack.i=-1;
        while((c=getchar())!='\n')
        {
            if(c=='['||c=='(')
                stack.str[++stack.i]=c;
            else if((stack.str[stack.i]=='['&&c==']')||(stack.str[stack.i]=='('&&c==')'))
                stack.i--;
            else
                {
                    stack.i=0;
                    break;
                }
        }
        if(stack.i==-1)
        cout<<"yes"<<endl;
        else
        cout<<"no"<<endl;
        N--;
    }
    return 0;
}


分享到:
评论

相关推荐

    ACM 括号配对问题

    ACM 在线测评第二题,括号配对!表示完全是自己写的,没有参考他人思想!有不足之处请指正!

    Algorithm-203-ACM-Problems-Code.zip

    本资源"Algorithm-203-ACM-Problems-Code.zip"包含了203个ACM(国际大学生程序设计竞赛)问题的C语言源代码,为我们提供了一个深入学习和理解算法的宝贵平台。 ACM国际大学生程序设计竞赛是全球最具影响力的大学生...

    ACM------搜索 (从入门到精通)

    ACM------搜索 (从入门到精通) ACMER 必备,经典讲义!!!!个人看过的最好的搜索PPT

    个人ACM-ICPC模板acm-icpc-master.zip

    5. **练习题目**:可能包含历年的ACM-ICPC竞赛题目和解题报告,用于训练和检验模板的适用性。 6. **测试框架**:用于自动化测试代码正确性的脚本或程序,可能包括输入输出的比对、时间复杂度的计算等功能。 7. **...

    手写代码必备手册(C++版)&&acm;-cheat-sheet

    书中不仅涵盖了ACM算法竞赛中常见的问题类型,还提供了手写的编码实践,帮助读者在没有计算机辅助的情况下也能通过手写代码的方式来解决问题。 本书的结构和内容设计符合ACM算法竞赛的准备需求,同时也适合于求职...

    ACM练习题ACM各种练习题ACM各种练习题ACM各种练习题

    ACM各种练习题ACM各种练习题ACM各种练习题ACM各种练习题ACM各种练习题ACM各种练习题ACM各种练习题ACM各种练习题ACM各种练习题ACM各种练习题ACM各种练习题ACM各种练习题ACM各种练习题ACM各种练习题ACM各种练习题ACM...

    ACM题集-ACM训练题集-超多ACM题集汇总-解题源码

    ACM(国际大学生程序设计竞赛,International Collegiate Programming Contest)是一项全球性的计算机编程竞赛,旨在提升大学生的算法设计、逻辑推理和问题解决能力。这个压缩包文件“ACM题集_ACM训练题集_超多ACM...

    ACM----7-27 题解.zip

    7-27题作为ACM竞赛中的一道经典问题,其解决方案涉及到多个关键知识点,值得深入探讨。 首先,我们来了解数据结构。数据结构是组织和存储数据的方式,它决定了数据的访问效率。常见的数据结构有数组、链表、栈、...

    acm基础之--acm常用代码1

    学习这个文件,你需要理解每个代码的逻辑,尝试自己实现,然后通过ACM竞赛平台进行练习,以提高编程和算法能力。同时,不要忘了对每种方法进行性能分析,了解其时间和空间复杂度,以便在实际比赛中选择最适合的解题...

    acm代码程序资源-acm-icpc-master.zip

    《acm代码程序资源-acm-icpc-master.zip》是一份针对ACM国际大学生程序设计竞赛(ACM-ICPC)精心整理的代码资源包,旨在帮助参赛者提高编程能力和算法水平。这份资源包涵盖了广泛的算法和数据结构知识,并提供了详尽...

    acm基础之--acm常用代码2

    【ACM基础之--ACM常用代码2】 在编程竞赛领域,ACM(国际大学生程序设计竞赛...实践是检验理论的最好方式,通过不断参与模拟赛或在线编程平台的练习,可以逐步提高自己的编程和算法水平,为参加ACM竞赛做好充分准备。

    acm教程系列--3

    acm教程系列--3

    acm-cheat-sheet, Acm Cheat Sheet.zip

    "acm-cheat-sheet" 是一份专门为ACM竞赛准备的速查表,它包含了大量关键知识点,帮助参赛者快速回顾和应用各种编程技巧。 速查表通常涵盖以下几个核心领域: 1. **基础算法**:包括排序(快速排序、归并排序、堆...

    acm-template-ACM模版

    acm_-template-ACM模版

    ACM资料大全--------

    ACM,全称是International Collegiate Programming Contest(国际大学生程序设计竞赛),是一项旨在展示大学生创新能力、团队合作精神和解决实际问题能力的世界级编程比赛。这个压缩包“ACM资料大全”显然包含了丰富...

    ACM图论--数据结构必知必会

    ACM图论--ACM必过一关,希望对在学数据结构与算法的人有所帮助!

    ACM-ACM-ICPC算法示例之Greedy-题解.zip

    压缩包中的文件“ACM_ACM-ICPC算法示例之Greedy_题解”可能包含了上述各种问题的具体实现和解题思路,包括代码示例和详细的解释,对于参赛者来说是极好的学习资源。通过深入学习这些题解,你可以理解贪心算法如何...

    PyPI 官网下载 | mypy-boto3-acm-pca-1.12.24.0.tar.gz

    mypy-boto3-acm-pca是一个Python库,它可能是为了解决特定的问题或实现特定的功能而创建的。 mypy-boto3-acm-pca库专注于Amazon Web Services(AWS)的ACM PCA(AWS Certificate Manager Private Certificate ...

    PyPI 官网下载 | mypy-boto3-acm-pca-1.17.43.0.tar.gz

    标题中的“PyPI 官网下载 | mypy-boto3-acm-pca-1.17.43.0.tar.gz”表明这是一个从Python Package Index(PyPI)官方源下载的压缩包,其中包含了名为“mypy-boto3-acm-pca”的Python库的特定版本1.17.43.0。...

Global site tag (gtag.js) - Google Analytics