本文主要是介绍ny2括号配对问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
括号配对问题
时间限制: 3000 ms | 内存限制: 65535 KB
难度: 3
- 描述
- 现在,有一行括号序列,请你检查这行括号是否配对。
- 输入
- 第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[","]","(",")"四种字符 输出
- 每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No 样例输入
-
3 [(]) (]) ([[]()])
样例输出 -
No No Yes
#include<cstdio> #include<cstring> #include<stack> #include<iostream> using namespace std; char a[10005],len; bool pei() {int i,j=0;int flag=0;stack<char>s;if(len%2==1){ printf("No\n");return 0;}while(!s.empty()){s.pop();}for(i=0;i<len;i++){if(a[i]=='['||a[i]=='('){s.push(a[i]); }elseif(a[i]==']'){if(!s.empty()){char c=s.top();s.pop();if(c=='['){continue;}elseflag=1;}elseflag=1;}elseif(a[i]==')'){if(!s.empty()){ char c=s.top(); s.pop();if(c=='('){continue;}elseflag=1;}elseflag=1;}if(flag==1)break;}if(flag==1)printf("No\n");elseprintf("Yes\n"); } int main() {int n;scanf("%d",&n);while(n--){scanf("%s",a);len=strlen(a);pei();}return 0; }
这篇关于ny2括号配对问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!