UVA 551
来源:互联网 发布:安卓本子软件 编辑:程序博客网 时间:2024/05/18 01:11
栈的应用 括号匹配
#include <iostream>#include <string>#include <cstdio>#include <memory.h>#include <stack>using namespace std;char buf[3100];int tb[6000];bool isCloseBracket(char ch){return ch==')'||ch==']'||ch=='}'||ch=='>';}void init(){tb['[']=']';tb[']']='[';tb['(']=')';tb[')']='(';tb['{']='}';tb['}']='{';tb['<']='>';tb['>']='<';tb['[']=']';tb['('*100+'*']='*'*100+')';tb['*'*100+')']='('*100+'*';}int main(){init();while (gets(buf)&&strcmp(buf,"")){stack<int>stak;int pos=1,len=strlen(buf),flag=0;for (int i=0;i<len;++i){char c=buf[i];if(c=='('&&i+1<len&&buf[i+1]=='*'){stak.push('('*100+'*');i++;}else if(c=='*'&&i+1<len&&buf[i+1]==')'){if(stak.size()==0||tb['*'*100+')']!=stak.top()){flag=1;break;}else stak.pop();i++;}else if(tb[c]){if(isCloseBracket(c)){if(stak.size()==0||tb[c]!=stak.top()){flag=1;break;}else stak.pop();}else{stak.push(c);}}++pos;}if(stak.size()||flag)printf("NO %d\n",pos);else printf("YES\n");}return 0;}
- UVA 551
- uva
- UVA
- UVA
- UVA
- uva
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- 请大家来看看这几篇论文到底怎么样—ViBe
- vi/vim使用入门: vimrc在哪儿?vim配置文件相关问题
- 《高质量程序设计指南——C/C++》第15章 C++异常处理机制和RTTI
- 取随机数
- 移植opencv2.4.2到tiny6410的实例
- UVA 551
- wamp虚拟主机配置
- 虚幻4引擎将至!从虚幻看游戏引擎发展
- getopt命令详解
- Learning-Markdown (Markdown 入门参考)
- 子矩阵
- Ubuntu 忘记root密码 如何解决
- hadoop配置(个人总结)
- QT Webkit与JS通信