XYNUOJ1792: 括号配对问题
1792: 括号配对问题 时间限制: 3 Sec 内存限制: 64 MB 提交: 211 解决: 94 您该题的状态:已完成 [提交][状态][讨论版] 题目描述 现在,有一行括号序列,请你检查这行括号是否配对。 输入 第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[","]","(",")"四种字符 输出 每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No 样例输入 3 [(]) (]) ([ ]) 样例输出 No No Yes 思路: 先用字符数组来存数据,然后利用栈先入后出的特性来判断是否匹配。 如果是’[‘或’{‘,推入栈中,如果是’]’,’}’,来与栈顶判断,若匹配则推出,反之break。 注意设置标记,若第一个就是’]’,’}’,则此字符肯定不对。就不用判断接下来的了直接break。 如果经过判断不匹配,也打上标记break。 因为栈是再循环之外定义的,需要把栈清空供下次使用。 #include <iostream> #include <cstring> #include <stack> using namespace std; int main() { int n,i