括号匹配问题

1000(ms)
65535(kb)
3045 / 13375

假设表达式中允许包含两种括号:圆括号和方括号。编写一个算法判断表达式中的括号是否正确配对。

输入

由括号构成的字符串,包含”(“、”)“、”[“和”]“。

输出

如果匹配输出YES,否则输出NO。

样例输入

[([][]())]

样例输出

YES 

首先是手撕链栈的用法
 #include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
typedef char Datetype;
using namespace std; typedef struct link{
Datetype date;
struct link *next;
}Lnode; void Initstack(Lnode *&L)
{
L=(Lnode *)malloc(sizeof(Lnode));
L->next=NULL;
} void destroystack(Lnode *&L)
{
Lnode *p=L,*r=p->next;
while(r!=NULL)
{
free(p);
p=r;
r=r->next;
}
free(p);
} void push(Lnode *L , Datetype e)
{
Lnode *p;
p = (Lnode *)malloc(sizeof(Lnode));
p->date = e ;
p->next=L->next;
L->next=p;
} bool stackempty(Lnode *L)
{
return(L->next==NULL);
} bool pop(Lnode *&L , Datetype &e)
{
Lnode *p;
if(L->next==NULL)
return false;
p=L->next;
L->next=p->next;
e=p->date;
free(p);
return true;
} bool gettop(Lnode *L, Datetype &e)
{
if(L->next==NULL)
return false;
e=L->next->date;
return true;
} int main()
{
char a[],x;
cin>>a;
Lnode *L=NULL;
Initstack(L);
for(int i=;i<strlen(a);i++)
{
if(stackempty(L)) //栈为空就直接入栈
{
push(L,a[i]);
}
else{
gettop(L,x);
if(x=='('&&a[i]==')') //配对后就出栈
{
pop(L,x);
}
else if(x=='['&&a[i]==']')
{
pop(L,x);
}
else
{
push(L,a[i]); //未配对成功就入栈
}
}
}
if(stackempty(L))
cout<<"YES";
else
cout<<"NO";
destroystack(L);
return ;
}
然后是利用STL的做法
 #include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<stack>
#include<string>
using namespace std;
char arr;
int main()
{
stack<char>st;
while(scanf("%c",&arr)&&arr!='\n')
{
if(st.empty())
{
st.push(arr);
continue;
}
if((arr==']'&&st.top()=='[')||(arr==')'&&st.top()=='('))
st.pop();
else
st.push(arr);
}
if(st.empty())
cout<<"YES";
else
cout<<"NO";
}


swust oj 962的更多相关文章

  1. [Swust OJ 404]--最小代价树(动态规划)

    题目链接:http://acm.swust.edu.cn/problem/code/745255/ Time limit(ms): 1000 Memory limit(kb): 65535   Des ...

  2. [Swust OJ 649]--NBA Finals(dp,后台略(hen)坑)

    题目链接:http://acm.swust.edu.cn/problem/649/ Time limit(ms): 1000 Memory limit(kb): 65535 Consider two ...

  3. SWUST OJ NBA Finals(0649)

    NBA Finals(0649) Time limit(ms): 1000 Memory limit(kb): 65535 Submission: 404 Accepted: 128   Descri ...

  4. [Swust OJ 1023]--Escape(带点其他状态的BFS)

    解题思路:http://acm.swust.edu.cn/problem/1023/ Time limit(ms): 5000 Memory limit(kb): 65535     Descript ...

  5. [Swust OJ 1125]--又见GCD(数论,素数表存贮因子)

    题目链接:http://acm.swust.edu.cn/problem/1125/ Time limit(ms): 1000 Memory limit(kb): 65535   Descriptio ...

  6. [Swust OJ 1126]--神奇的矩阵(BFS,预处理,打表)

    题目链接:http://acm.swust.edu.cn/problem/1126/ Time limit(ms): 1000 Memory limit(kb): 65535 上一周里,患有XX症的哈 ...

  7. [Swust OJ 1026]--Egg pain's hzf

      题目链接:http://acm.swust.edu.cn/problem/1026/     Time limit(ms): 3000 Memory limit(kb): 65535   hzf ...

  8. [Swust OJ 1139]--Coin-row problem

    题目链接:  http://acm.swust.edu.cn/contest/0226/problem/1139/ There is a row of n coins whose values are ...

  9. [Swust OJ 385]--自动写诗

    题目链接:http://acm.swust.edu.cn/problem/0385/ Time limit(ms): 5000 Memory limit(kb): 65535    Descripti ...

随机推荐

  1. 00、Word Count

    1.开发环境 1.eclipse-jee-neon-3 2.scala-ide:http://download.scala-ide.org/sdk/lithium/e46/scala212/stabl ...

  2. 卷积神经网络(CNN)代码实现(MNIST)解析

    在http://blog.csdn.net/fengbingchun/article/details/50814710中给出了CNN的简单实现,这里对每一步的实现作个说明: 共7层:依次为输入层.C1 ...

  3. android自己定义控件之飞入飞出控件

    近期呢,本人辞职了.在找工作期间.不幸碰到了这个求职淡季,另外还是大学生毕业求职的高峰期,简历发了无数份却都石沉大海.宝宝心里那是一个苦啊! 翻着过去的代码,本人偶然找到了一个有意思的控件.那时本人还 ...

  4. (原)tensorflow使用eager在mnist上训练的简单例子

    转载请注明出处: https://www.cnblogs.com/darkknightzh/p/9989586.html 代码网址: https://github.com/darkknightzh/t ...

  5. 【Linux】CentOs的常用命令

    1.文件目录操作命令            ls:列出当前路径下的文件或者目录列表                -l 列出详细信息                -a 列出所有的文件信息,包括隐藏文 ...

  6. 【Android】解析AccessibilityService(辅助服务)的使用

    辅助功能是Android系统提供的一种服务,派生自Service类.这个服务提供了增强的用户界面,目的是为了帮助残障人士.它一般提供了页面元素查找功能和元素点击功能. 通过辅助功能,开发者可以实现一些 ...

  7. php中urlencode与rawurlencode的区别

    前段时间说自己遇到了个<URL加号引发错误>的BUG,引起这个bug的原因就是自己在URL中使用了 urlencode 函数,该函数会把空格转换成加号,这样就导致URL解析出错,而空格只有 ...

  8. mysql 动态增加列,查找表中有多少列,具体什么列。 通过JSON生成mysql表 支持子JSON

    好消息, 程序员专用早餐机.和掌柜说 ideaam,可以节省20元. 点击链接  或復·制这段描述¥k3MbbVKccMU¥后到淘♂寳♀ 或者 淘宝扫码 支持下同行哈 ---------------- ...

  9. Atitti 互联网时代三大竞争战略 ——平台化战略 锚”战略、价值领先战略

    Atitti 互联网时代三大竞争战略 ——平台化战略 锚”战略.价值领先战略 美国著名管理学家迈克尔•波特在<竞争战略>一书中提出了集中化战略和差异化战略.成本领先战略三种基本竞争战略,从 ...

  10. [ci]容器ci索引

    伙计们: 有任何意见或建议或看不懂的请在对应的文章下留言(请注明上下文) 我会及时改动. 这是以前的一些在物理机上搞过 [ci]容器ci索引 http://www.cnblogs.com/iiiihe ...