青岛网站建设鲁捷云,桂林优化公司,简历上作品展示网站链接怎么做,上海网络推广百橙括号配对问题 时间限制#xff1a;3000 ms | 内存限制#xff1a;65535 KB 难度#xff1a;3描述现在#xff0c;有一行括号序列#xff0c;请你检查这行括号是否配对。输入第一行输入一个数N#xff08;0N100#xff09;,表示有N组测试数据。后面的N行输入多…括号配对问题 时间限制3000 ms | 内存限制65535 KB 难度3 描述现在有一行括号序列请你检查这行括号是否配对。 输入第一行输入一个数N0N100,表示有N组测试数据。后面的N行输入多组输入数据每组输入数据都是一个字符串S(S的长度小于10000且S不是空串测试数据组数少于5组。数据保证S中只含有[, ], (, ) 四种字符输出每组输入数据的输出占一行如果该字符串中所含的括号是配对的则输出Yes,如果不配对则输出No样例输入 3
[(])
(])
([[]()]) 样例输出 No
No
Yes算法采用栈这种数据结构遍历字符串遇到(和[的时候放入栈中遇到)和]的时候取出栈顶元素进行对应的匹配匹配上了就出栈直到遍历完成如果栈中还有剩余的元素没有出栈那么输出NO否则输出Yes下面我们来看一下具体的代码 1 #include iostream2 #includestring.h3 #includestack4 using namespace std;5 int main()6 {7 int n;8 cinn;9 while(n--)
10 {
11 char a[10010];
12 cina;
13 int i,l;
14 lstrlen(a);
15 if(l%21)//字符个数为奇数则肯定不匹配
16 {
17 coutNoendl;
18 continue;
19 }
20 stack char s;
21 for(i0;il;i)
22 {
23 if(a[i](||a[i][)
24 {
25 s.push(a[i]);
26 }
27 else
28 {
29 if(!s.empty()s.top()(a[i]))
30 {
31 s.pop();
32 continue;
33 }
34 if(!s.empty()s.top()[a[i]])
35 {
36 s.pop();
37 continue;
38 }
39 }
40 }
41 if(!s.empty())
42 {
43 coutNoendl;
44 continue;
45 }
46 else
47 {
48 coutYesendl;
49 continue;
50 }
51 }
52 return 0;
53 } 若有不足和错误之处欢迎兄弟们拍砖指正 转载于:https://www.cnblogs.com/yinbiao/p/8280140.html