博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
题目2-括号配对问题
阅读量:5104 次
发布时间:2019-06-13

本文共 3446 字,大约阅读时间需要 11 分钟。

描述现在,有一行括号序列,请你检查这行括号是否配对。

 
输入
第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[","]","(",")"四种字符
输出
每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No
样例输入
3[(])(])([[]()])
样例输出
NoNoYes
1 #include
2 #include
3 #include
4 #include
5 using namespace std; 6 7 #define MaxSize 10000 8 typedef int ElemType; 9 typedef struct 10 { 11 ElemType data[MaxSize]; 12 int top; 13 }SqStack; 14 15 int InitStack(SqStack &S) 16 {
//初始化顺序栈 17 memset(S.data, 0, MaxSize); 18 S.top = -1; 19 return 1; 20 } 21 22 int Push(SqStack &S,char ch) 23 {
//字符进栈 24 if (S.top >= MaxSize) 25 return 0; 26 S.top++; 27 S.data[S.top] = ch; 28 return 1; 29 } 30 31 char Pop(SqStack &S) 32 {
//字符出栈 33 char ch; 34 if (S.top < 0) 35 return 0; 36 ch = S.data[S.top]; 37 S.top--; 38 //printf("Pop:: %c", ch); 39 //printf("\n"); 40 return ch; 41 } 42 43 void OutputStack(SqStack S) 44 { 45 for (int i = S.top; i >= 0; i--) 46 printf("%c ", S.data[i]); 47 printf("\n"); 48 } 49 50 51 52 int main() 53 {
//第一行输入一个数N(0
<=100),表示有N组测试数据。后面的N行输入多组 54 //输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空 55 //串),测试数据组数少于5组。数据保证S中只含有"[", "]", "(", ")"四种字符 56 int N; 57 scanf("%d", &N); 58 getchar();//读取回车 59 60 string line; 61 int len, i, tag; 62 char now, temp; 63 SqStack S; 64 while (N--) 65 { 66 tag = 1; 67 getline(cin, line); 68 //cout << line << endl; 69 len = line.length();//读入一行括号,计算字符串长度 70 InitStack(S);//初始化栈的内容 71 for (i = 0; i < len; i++) 72 { 73 now = line[i]; 74 switch (now) 75 { 76 case '[':Push(S, now); break;//printf("成功入栈:: "); OutputStack(S); 77 case '(':Push(S, now); break;//printf("成功入栈:: "); OutputStack(S); 78 default:break; 79 } 80 81 if (now == ']') 82 { 83 temp = Pop(S); 84 //printf("temp:: %c", temp); 85 //printf("\n"); 86 if (temp == '[') 87 continue; 88 else 89 { 90 //printf("tag=0 :: "); 91 //OutputStack(S); 92 tag = 0; 93 break; 94 } 95 } 96 else if(now == ')') 97 { 98 temp = Pop(S); 99 //printf("temp:: %c", temp);100 //printf("\n");101 if (temp == '(')102 continue;103 else104 {105 //printf("tag=0 :: ");106 //OutputStack(S);107 tag = 0;108 break;109 }110 }111 }112 if (tag == 0)113 {114 printf("No\n");115 }116 else if (tag == 1 && S.top == -1)117 {118 printf("Yes\n");119 }120 else121 {122 printf("No\n");123 }124 }125 126 return 0;127 }128 //_CRT_SECURE_NO_WARNINGS

 

转载于:https://www.cnblogs.com/mollymolly/p/6798837.html

你可能感兴趣的文章
SQL Server获取月度列表
查看>>
python常用函数
查看>>
python 描点画圆
查看>>
FastDFS使用
查看>>
服务器解析请求的基本原理
查看>>
pycharm 如何设置方法调用字体颜色
查看>>
VUE源码解析心得
查看>>
[HDU3683 Gomoku]
查看>>
【工具相关】iOS-Reveal的使用
查看>>
整体二分——[Poi2011]Meteors
查看>>
数据库3
查看>>
delphi之事件
查看>>
windows server 2008 r2 安装
查看>>
存储分类
查看>>
下一代操作系统与软件
查看>>
【iOS越狱开发】如何将应用打包成.ipa文件
查看>>
[NOIP2013提高组] CODEVS 3287 火车运输(MST+LCA)
查看>>
Yii2 Lesson - 03 Forms in Yii
查看>>
Python IO模型
查看>>
Ugly Windows
查看>>