括号匹配 加 括号的对数
2015-04-20 12:54
127 查看
#include <string.h> #include<iostream> #include <stdio.h> #include <stack> using namespace std; int s[1000005]; //存括号的层数 stack<char>q; int main() { int bbs,k=1; scanf("%d",&bbs); getchar(); while(bbs--) { int maxn=0; int tt=0; s[tt]=0; char ch; while(!q.empty()) q.pop(); //清栈 while(1) { ch=getchar(); if(ch=='\n') break; if(ch=='('||ch=='['||ch=='{') { if(ch=='(') //对应到')' ,,为()的 ascaii码 差1, { ch++; } else ch+=2; //对应到 ] 或 } ,【】{}的ascaii码值差2 q.push(ch); s[++tt]=0; } else { if(q.empty()) { tt=0;s[tt]=0; } else if(ch==q.top()) { q.pop(); s[tt]+=2; s[tt-1]+=s[tt]; tt--; maxn=(s[tt]>maxn)?s[tt]:maxn; } else { while(!q.empty()) //没得匹配 不符 记录为0层 q.pop(); tt=0; s[tt]=0; } } } printf("Case #%d: ",k++); if(maxn!=0) printf("%d\n",maxn); else printf("I think H is wrong!\n"); } return 0; }
相关文章推荐
- 给定括号对数求匹配的数目
- 括号匹配(栈)--引起集合的思考
- java实现最长匹配括号的长度
- 栈的实现和括号匹配
- 寻找匹配括号
- 括号问题 下面的代码用于判断一个串中的括号是否匹配 所谓匹配是指不同类型的括号必须左右呼应,可以相互包含,但不能交叉
- 括号匹配问题
- 如何利用正则表达式匹配花括号内的内容
- java正则表达式匹配小括号内的内容
- UVA 673 括号的匹配——经典栈的应用
- C# 正则表达式匹配多层嵌套的括号里面的内容 百度api逆地址解析
- 括号匹配
- 字符串中左右括号匹配判断
- UVA673括号匹配之vector和stack使用的时候的注意点
- 通过栈实现括号匹配
- 栈应用 一(括号匹配)
- SDUT2134数据结构实验之栈四:括号匹配(栈)
- 数据结构实验之栈四:括号匹配
- 括号匹配(二)
- 用栈实现括号匹配的检验