括号配对问题

时间限制:3000 ms  |  内存限制:65535 KB
难度:3

描述
现在,有一行括号序列,请你检查这行括号是否配对。
输入
第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[","]","(",")"四种字符
输出
每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No
样例输入
3
[(])
(])
([[]()])
样例输出
No
No
Yes

我的代码:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define MAX 10000
int main()
{char a[MAX+10],b[MAX+10];int n;scanf("%d",&n);while(n--){int l,i,p,top=1;memset(a,0,sizeof(a));memset(b,0,sizeof(b));scanf("%s",a);l=strlen(a);    for(i=0;i<l;i++){p=1;if(a[i]=='('||a[i]=='['){if(a[i]=='('){ b[top]=')';top++;}else{b[top]=']';top++;}}else if(a[i]==')'||a[i]==']'){if(b[top-1]==a[i])top--;else if(b[top-1]!=a[i]){p=0;break;}}if(i==l-1&&top!=1){p=0;break;}}if(p==1)printf("Yes\n");elseprintf("No\n");}return 0;
}

其实输出结果时还可以写成printf("%s\n",p?"Yes":"No");
我同学的:

# include <stdio.h>
# include <string.h>
int main()
{char s[11000],s1[11000];int N,l,top,i;scanf("%d",&N);while(N--){memset(s,0,sizeof(s));memset(s1,0,sizeof(s1));scanf("%s",s);l=strlen(s);top=2;for(i=0,top=2;i<l;i++){s1[top++]=s[i];while(s1[top-1]-s1[top-2]==1||s1[top-1]-s1[top-2]==2){top=top-2;}}if(top<=2)printf("Yes\n");elseprintf("No\n");}return 0;
}

这是一道有意思的题,主要还是运用栈的原理做的。

转载于:https://www.cnblogs.com/wangyouxuan/p/3248685.html

括号配对问题http://acm.nyist.net/JudgeOnline/problem.php?pid=2相关推荐

  1. 独木舟上的旅行http://acm.nyist.net/JudgeOnline/problem.php?pid=71

    独木舟上的旅行 时间限制:3000 ms  |  内存限制:65535 KB 难度:2 描述 进行一次独木舟的旅行活动,独木舟可以在港口租到,并且之间没有区别.一条独木舟最多只能乘坐两个人,且乘客的总 ...

  2. Triangular Sums http://acm.nyist.net/JudgeOnline/problem.php?pid=122

    Triangular Sums 时间限制:3000 ms  |  内存限制:65535 KB 难度:2 描述 The nth Triangular number, T(n) = 1 + - + n, ...

  3. 次方求模 http://acm.nyist.net/JudgeOnline/problem.php?pid=102

    次方求模 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 求a的b次方对c取余的值 输入 第一行输入一个整数n表示测试数据的组数(n<100) 每组测试只有一行,其 ...

  4. 会场安排问题 http://acm.nyist.net/JudgeOnline/problem.php?pid=14

    会场安排问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 学校的小礼堂每天都会有许多活动,有时间这些活动的计划时间会发生冲突,需要选择出一些活动进行举办.小刘的工作就 ...

  5. 分数加减法 http://acm.nyist.net/JudgeOnline/problem.php?pid=111

    数加减法 时间限制:3000 ms  |  内存限制:65535 KB 难度:2 描述 编写一个C程序,实现两个分数的加减法 输入 输入包含多行数据 每行数据是一个字符串,格式是"a/boc ...

  6. 蚂蚁的难题(一) http://acm.nyist.net/JudgeOnline/status.php?pid=744

    蚂蚁的难题(一) 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 小蚂蚁童鞋最近迷上了位运算,他感觉位运算非常神奇.不过他最近遇到了一个难题: 给定一个区间[a,b],在 ...

  7. ACM 1740 A New Stone Game http://acm.pku.cn/JudgeOnline/problem?id=1740

    题目大意:有N堆石头,每堆石头数目在1到100之间,最多有10堆.两人分别取走石头.取石头的规则是:每次只能从1堆中取,每次取走至少1个.取过后还可以把这堆的石头任意分配到其它堆上(这些堆必须有石头, ...

  8. Biorhythms ACM PKU http://acm.pku.cn/JudgeOnline/problem?id=1006

    本题可以参考Wikipedia上线性同余同方程的解法,方法很简单手算一会就出来了.也可以参考中国同余定理:就这么多,下面我展示我的代码:#include <iostream> using ...

  9. Hansel and Grethel ACM pku http://acm.pku.cn/JudgeOnline/problem?id=1254

    1254是一道非常简单的关于平面直线相交问题的计算,只要注意一点: 斜率并不是所给出的指南针上的度数而应该是(90-degree):解决了此问题后所有的问题都迎刃而解了 我的代码如下: #includ ...

最新文章

  1. 提高电路板EMC能力PCB设计和布线方法
  2. java map可以直接用增强for吗
  3. 回炉重造-基础规则之类和对象
  4. python旋转矩阵_python实现回旋矩阵方式(旋转矩阵)
  5. 加密与安全 - Java加密与安全
  6. OpenStack、KVM、Docker——Docker之后还需要OpenStack吗?
  7. (数据库系统概论|王珊)第七章数据库设计:习题
  8. LateX在windows中运用MiKTeX
  9. 使用iScroll实现上、下滑动刷新和加载更多数据
  10. mongodb 字符串转bson_大数据存储技术选型(六)--Mongodb专题介绍
  11. Linux下视频流媒体服务器搭建详解
  12. window下postgresql启动服务失败 Access is denied
  13. python字典读取特定值_python 获取字典特定值对应的键的实现
  14. 怎么制作一张5M以上的大图片
  15. 深入iOS系统底层之静态库介绍
  16. 【题解】POJ 3069 Saruman's Army(贪心)
  17. SpringBoot整合websocket实现及时通信聊天
  18. airpods pro是按压还是触摸_苹果三代耳机是触摸还是按键
  19. Redis缓存雪崩缓存击穿缓存穿透
  20. 第6章函数-6 缩写词(20分)

热门文章

  1. Markdown (H5 ) 降价
  2. Python之函数参数介绍
  3. Oracle把Java EE的未来押在Rest API上了?
  4. Why String is Immutable or Final in Java
  5. linuxz指令大全
  6. JAVA的类名.this
  7. RHEL7/CentOS7在线和离线安装GitLab配置使用实践
  8. Ext3和Ext4文件系统
  9. Java VisualVM远程监控JVM
  10. SQLSERVER是怎麽通过索引和统计信息来找到目标数据的(第二篇)