发现一个,保持自己编码战斗力的练习场,南阳理工学院的在线ACM系统。
有兴趣的同学,可以注册一个,每天练习一题,题目不难的。
原题见:http://acm.nyist.net/JudgeOnline/problem.php?pid=2
括号配对问题
描述
现在,有一行括号序列,请你检查这行括号是否配对。
输入
第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[","]","(",")"四种字符
输出
每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No
样例输入
3
[(])
(])
([[]()])
样例输出
No
No
Yes
我的程序,采用语言c++。
思路:将未匹配字符入栈,没当有匹配字符,出栈。最后检测栈是否为空即可。
源码已经过在线系统验证。
SyntaxMatch.cpp
#include <iostream>
#include <vector>
using namespace std;
int main(void)
{
int nLineNum = 0;
cin>>nLineNum;
if(nLineNum<0 || nLineNum>100)
{
cout<<"Please input number 0<n<=100."<<endl;
return 1;
}
vector<string> vInputList;
for(int i=0; i<nLineNum; ++i)
{
string sInputStr="";
cin>>sInputStr;
if(sInputStr.size() == 0)
{
cout<<"Error:Input string is empty."<<endl;
--i;
continue;
}
if(sInputStr.size() >=10000)
{
cout<<"Error:Input string is too long."<<endl;
--i;
continue;
}
vInputList.push_back(sInputStr);
}
vector<string>::iterator vIter = vInputList.begin();
for(; vIter != vInputList.end(); ++vIter)
{
string sUnMatch="";
string sInput=*vIter;
string::iterator sIter = sInput.begin();
for(; sIter != sInput.end(); ++sIter)
{
char cCurChar = *sIter;
if(sUnMatch.empty())
{
sUnMatch.push_back(cCurChar);
}
else
{
string::iterator sEndIter = sUnMatch.end() - 1;
char cEndChar=*sEndIter;
if((cEndChar=='[' && cCurChar==']')
||(cEndChar=='(' && cCurChar==')'))
{
sUnMatch.erase(sEndIter);
}
else
{
sUnMatch.push_back(cCurChar);
}
}
}
if(sUnMatch.empty())
{
cout<<"Yes"<<endl;
}
else
{
cout<<"No"<<endl;
}
}
return 1;
}
分享到:
相关推荐
ACM 在线测评第二题,括号配对!表示完全是自己写的,没有参考他人思想!有不足之处请指正!
本资源"Algorithm-203-ACM-Problems-Code.zip"包含了203个ACM(国际大学生程序设计竞赛)问题的C语言源代码,为我们提供了一个深入学习和理解算法的宝贵平台。 ACM国际大学生程序设计竞赛是全球最具影响力的大学生...
ACM------搜索 (从入门到精通) ACMER 必备,经典讲义!!!!个人看过的最好的搜索PPT
5. **练习题目**:可能包含历年的ACM-ICPC竞赛题目和解题报告,用于训练和检验模板的适用性。 6. **测试框架**:用于自动化测试代码正确性的脚本或程序,可能包括输入输出的比对、时间复杂度的计算等功能。 7. **...
书中不仅涵盖了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...
7-27题作为ACM竞赛中的一道经典问题,其解决方案涉及到多个关键知识点,值得深入探讨。 首先,我们来了解数据结构。数据结构是组织和存储数据的方式,它决定了数据的访问效率。常见的数据结构有数组、链表、栈、...
学习这个文件,你需要理解每个代码的逻辑,尝试自己实现,然后通过ACM竞赛平台进行练习,以提高编程和算法能力。同时,不要忘了对每种方法进行性能分析,了解其时间和空间复杂度,以便在实际比赛中选择最适合的解题...
《acm代码程序资源-acm-icpc-master.zip》是一份针对ACM国际大学生程序设计竞赛(ACM-ICPC)精心整理的代码资源包,旨在帮助参赛者提高编程能力和算法水平。这份资源包涵盖了广泛的算法和数据结构知识,并提供了详尽...
【ACM基础之--ACM常用代码2】 在编程竞赛领域,ACM(国际大学生程序设计竞赛...实践是检验理论的最好方式,通过不断参与模拟赛或在线编程平台的练习,可以逐步提高自己的编程和算法水平,为参加ACM竞赛做好充分准备。
acm教程系列--3
"acm-cheat-sheet" 是一份专门为ACM竞赛准备的速查表,它包含了大量关键知识点,帮助参赛者快速回顾和应用各种编程技巧。 速查表通常涵盖以下几个核心领域: 1. **基础算法**:包括排序(快速排序、归并排序、堆...
acm_-template-ACM模版
ACM,全称是International Collegiate Programming Contest(国际大学生程序设计竞赛),是一项旨在展示大学生创新能力、团队合作精神和解决实际问题能力的世界级编程比赛。这个压缩包“ACM资料大全”显然包含了丰富...
ACM图论--ACM必过一关,希望对在学数据结构与算法的人有所帮助!
压缩包中的文件“ACM_ACM-ICPC算法示例之Greedy_题解”可能包含了上述各种问题的具体实现和解题思路,包括代码示例和详细的解释,对于参赛者来说是极好的学习资源。通过深入学习这些题解,你可以理解贪心算法如何...
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”表明这是一个从Python Package Index(PyPI)官方源下载的压缩包,其中包含了名为“mypy-boto3-acm-pca”的Python库的特定版本1.17.43.0。...