括号配对问题
来源:互联网 发布:怎么做淘宝充值代理 编辑:程序博客网 时间:2024/06/13 09:12
- 输入
- 第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[", "]", "(", ")" 四种字符
- 输出
- 每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No
- 样例输入
3[(])(])([[]()])
- 样例输出
NoNoYes
1、"("、"】"或者"【"、")"相邻
2、"】" 、 ")" 在"【"、"("之前出现
3、"(" 与 ")" 或者 "【" 与 "】" 的个数不同
#include<stdio.h>#include<string.h>int main(){int n;int i;int A,B;scanf("%d",&n);char a[10000];while(n--){scanf("%s",&a);
//利用A B分别统计()【】数量for(A=0,B=0,i=0;i<strlen(a);i++){if(a[i]=='[')A++;else if(a[i]==']')A--;else if(a[i]=='(')B++;else B--;
//首位不能出现)或者】if(i>0){if(a[i-1]=='['&&a[i]==')'){printf("No\n");break;}if(a[i-1]=='('&&a[i]==']'){printf("No\n");break;}}else if(a[i]==']'||a[i]==')'){printf("No\n");break;}if(A<0||B<0){printf("No\n");break;}}if(i==strlen(a)){if(A==0&&B==0)printf("Yes\n");elseprintf("No\n");}}return 0;}
阅读全文
0 0
- 括号配对问题
- 括号配对问题
- 括号配对问题
- 括号配对问题
- 括号配对问题
- NYOJ - 括号配对问题
- nyoj 括号配对问题
- 括号配对问题
- 括号配对问题
- 括号配对问题
- 括号配对问题
- [ACM]括号配对问题
- NYOJ2 括号配对问题
- 括号配对问题
- 2 括号配对问题
- 括号配对问题
- 括号配对问题
- 【括号配对问题 2】
- 使用 GObject 库模拟类的数据封装形式
- c++ primer 笔记,第七章
- Mvp+Retrofit(post)用户登录
- 【skill】Use snippets in vim
- 启发式算法
- 括号配对问题
- GObject 子类对象的私有属性模拟
- 数据结构实验之二叉树六:哈夫曼编码
- 根据先序遍历和中序遍历建立二叉树
- jvm,高并发,负载均衡,redis,多线程,视频教程
- 密码学:基于python的rsa算法
- 阿里高级Java面试题(首发,70道,带详细答案)
- mybatis的鉴别列查询
- JVM(PART XXIII)Java内存模型