NYOJ 括号配对问题(不用栈)
来源:互联网 发布:卫星电视网络在线直播 编辑:程序博客网 时间:2024/05/22 00:26
- 描述
- 现在,有一行括号序列,请你检查这行括号是否配对。
- 输入
- 第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[", "]", "(", ")" 四种字符
- 输出
- 每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No
- 样例输入
3[(])(])([[]()])
- 样例输出
NoNoYes
看别人的答案都用栈,因为不会用,所以用一般的方法。代码很长
思考: ] 的前面 一定不是 ( 。!!!!
)的前面一定不是 [ 。!!!
用 b 来统计 能配对的次数
b*2 就是 配对的字符的总个数
拿b*2 与字符串长度 l 比较!!!!
当然,如果 长度是奇数,第一个字符是 ] 或 ) 一定是不行的的
#include<stdio.h>#include<string.h>int main(){int n,l,i,j;int a,b;char s[10020];scanf("%d",&n);getchar();while(n--){ a = 0; b = 0;scanf("%s",s);l=strlen(s);if(l%2==1||s[0]==']'||s[0]==')'){printf("No\n");continue;}else{for(i=1;i<l;i++){if(s[i]==']'){if(s[i-1]=='('){printf("No\n");a =1;break;}} else if(s[i]==')') { if(s[i-1]=='[') { printf("No\n"); a = 1; break; } }if(s[i]==']'){for(j=i-1;j>=0;j--){if(s[j]=='['){s[i]=s[j]='0'; b++;break;}else if(s[j]=='0'){continue;}}}else if(s[i]==')'){for(j=i-1;j>=0;j--){if(s[j]=='('){s[i]=s[j]='0';b++;break;}else if(s[j]=='0'){continue;}}}}if(b==l/2) printf("Yes\n"); else if(b!=l/2&&a!=1) printf("No\n");}}return 0;}
阅读全文
0 0
- NYOJ 括号配对问题(不用栈)
- 括号配对问题(不用栈)
- NYOJ 2 括号配对问题(栈)
- nyoj 括号配对问题(栈)
- 括号配对问题--nyoj-2(栈)
- NYOJ 2 括号配对问题(栈)
- NYoj 2 括号配对问题(栈)
- 栈 NYOJ 2 (括号配对问题)
- NYOJ 括号配对问题(栈)
- NYOJ - 括号配对问题
- nyoj 括号配对问题
- NYOJ【括号配对问题】
- NYOJ-括号配对问题
- nyoj 括号配对问题
- NYOJ 括号配对问题
- nyoj括号配对问题
- nyoj 括号配对问题
- NYOJ-括号配对问题
- Scala 中应用 Future 并发编程
- 分享一个问题的解决方法IllegalArgumentException: Viewnot attached to window manager
- android_fragment加载
- 使用servlet+jsp实现简单的网络通信
- springMVC4.3.7整合 swagger2 2.6.1
- NYOJ 括号配对问题(不用栈)
- Ubuntu 16.04下Intel SGX应用程序程序开发——获得OCALL调用的返回值
- overflow滚动条无效
- 带你一起探究Retrofit 源码,让你不再畏惧Retrofit的面试提问
- 设计模式——享元模式
- oracle修改多张表的字段及值
- 如何在提交代码时去掉忽略性文件
- 风投在中国
- SVN创建资源库和远程连接配置