南阳理工ACM 2括号配对问题
2016-04-09 22:22
316 查看
括号配对问题
时间限制:3000 ms | 内存限制:65535 KB
难度:3
描述
现在,有一行括号序列,请你检查这行括号是否配对。
输入
第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[","]","(",")"四种字符
输出
每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No
样例输入
3
[(])
(])
([[]()])
样例输出
No
No
Yes
来源
网络
上传者
naonao
代码1:
代码2:
本人能力有限,如果内容出错,感谢您能指出
时间限制:3000 ms | 内存限制:65535 KB
难度:3
描述
现在,有一行括号序列,请你检查这行括号是否配对。
输入
第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[","]","(",")"四种字符
输出
每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No
样例输入
3
[(])
(])
([[]()])
样例输出
No
No
Yes
来源
网络
上传者
naonao
代码1:
# include <stdio.h> # include <string.h> int main (void) { char Stack[10000], str[10000]; int N, j; scanf ("%d\n", &N); while (N--) { int flag = 0, i = 0; gets(str); for (i = 0; i < strlen(str); i++) { if (str[i]== '(' || str[i] == '[') { Stack[j++] = str[i]; } else { if(j==0) { flag = 1; break; } j--; if ((Stack[j]== '(' && str[i]!=')')||(Stack[j]== '[' && str[i]!=']')) { flag = 1; break; } } } if (flag == 1 || j==0) printf ("No\n"); else printf ("Yes\n"); } return 0; }
代码2:
#include <stdio.h> #include <stdlib.h> struct Stack { char *base; char *top; int sizestack; }; void InitStack (struct Stack &S) { S.base = (char *)malloc (sizeof(char)*10010); S.top = S.base; int sizestack = 10002; } void Push (struct Stack &S, char c) { *S.top++ == c; } int StackEmp (struct Stack S) { if (S.top == S.base) return 1; else return 0; } void Pop (struct Stack &S, char &c) { c = *--S.top; } int main (void) { Stack S; InitStack(S); int N = 0, flag = 0; char str[10010], *p, s; scanf ("%d\n", &N); while (N--) { flag = 0; gets(str); p = str; while (*p != '\0') { if (*p == '(' || *p == '[') Push(S, *p); else { if (StackEmp(S)) { flag = 1; break; } else { Pop(S, s); if ((s == '(' && *p != ')') || (s == '[' && *p != ']')) { flag = 1; break; } } } p++; } if (flag == 1 || !StackEmp(S)) printf ("No\n"); else printf ("Yse\n"); S.top = S.base; } free(S.base); S.base = S.top = NULL; return 0; }
本人能力有限,如果内容出错,感谢您能指出
相关文章推荐
- Lowest Common Multiple Plus
- 各态遍性
- OpenGL纹理详解(下)
- 清除行列
- SQLiteOpenHelper类基础
- PHP入门学习笔记之—— PHP 函数
- 2016.4.9 NOI codevs动态规划专练
- HTML5学习之 开发工具
- 【九度OJ】题目1061:成绩排序
- 轻量级应用开发之(06)Autolayout自动布局1
- 广告轮播
- 关于c#除法运算的问题
- Java的七种单例模式
- UnknownHandler
- 现代软件工程第六章作业
- Android客户端与PHP服务端交互(一)---框架概述
- 使用gradle进行apk打包
- PHP登陆后跳转到登陆前页面实现思路及代码
- C协程实现的效率对比
- 软件开发中需求的先决条件