swust oj 962
括号匹配问题
假设表达式中允许包含两种括号:圆括号和方括号。编写一个算法判断表达式中的括号是否正确配对。
输入
由括号构成的字符串,包含”(“、”)“、”[“和”]“。
输出
如果匹配输出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的更多相关文章
- [Swust OJ 404]--最小代价树(动态规划)
题目链接:http://acm.swust.edu.cn/problem/code/745255/ Time limit(ms): 1000 Memory limit(kb): 65535 Des ...
- [Swust OJ 649]--NBA Finals(dp,后台略(hen)坑)
题目链接:http://acm.swust.edu.cn/problem/649/ Time limit(ms): 1000 Memory limit(kb): 65535 Consider two ...
- SWUST OJ NBA Finals(0649)
NBA Finals(0649) Time limit(ms): 1000 Memory limit(kb): 65535 Submission: 404 Accepted: 128 Descri ...
- [Swust OJ 1023]--Escape(带点其他状态的BFS)
解题思路:http://acm.swust.edu.cn/problem/1023/ Time limit(ms): 5000 Memory limit(kb): 65535 Descript ...
- [Swust OJ 1125]--又见GCD(数论,素数表存贮因子)
题目链接:http://acm.swust.edu.cn/problem/1125/ Time limit(ms): 1000 Memory limit(kb): 65535 Descriptio ...
- [Swust OJ 1126]--神奇的矩阵(BFS,预处理,打表)
题目链接:http://acm.swust.edu.cn/problem/1126/ Time limit(ms): 1000 Memory limit(kb): 65535 上一周里,患有XX症的哈 ...
- [Swust OJ 1026]--Egg pain's hzf
题目链接:http://acm.swust.edu.cn/problem/1026/ Time limit(ms): 3000 Memory limit(kb): 65535 hzf ...
- [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 ...
- [Swust OJ 385]--自动写诗
题目链接:http://acm.swust.edu.cn/problem/0385/ Time limit(ms): 5000 Memory limit(kb): 65535 Descripti ...
随机推荐
- 一步步教你轻松学关联规则Apriori算法
一步步教你轻松学关联规则Apriori算法 (白宁超 2018年10月22日09:51:05) 摘要:先验算法(Apriori Algorithm)是关联规则学习的经典算法之一,常常应用在商业等诸多领 ...
- Android 蓝牙开发
今天给大家带来蓝牙开发的基础,主要展示的是程序搜到蓝牙会通过list展示出来,并实时排序,远近与信号强弱 首先我们要有次jar包 watermark/2/text/aHR0cDovL2Jsb2cuY3 ...
- 记一次免费让网站启用HTTPS的过程
写在前面 个人网站运行将近2个月了,期间根据酷壳的一篇教程如何免费的让网站启用HTTPS做了一次,中间遇到问题就放下了.昨天孙三苗问我网站地址说要添加友链,出于好奇想看他网站长什么样,顺道也加一下友链 ...
- bootstrap-datepicker应用
参考本人的github:https://github.com/gmqllf/Datepicker-for-Bootstrap (fork官方的) 一.使用datepicker for bootstra ...
- Intellij IDEA配置PHP开发环境
Intellij IDEA是一款非常强大的编译器,能很好地支持JavaHTML CSS等.当然,加入PHP语言也是小菜一碟~ 环境: Windows 7.Intellij IDEA 2016.2.5. ...
- Azure CentOS挂载磁盘
查看新增挂载磁盘 ls -l /dev/sd*  sudo fdisk /dev/sdc 依次输入:n,p,1,w  3.格式化分区 sudo mkfs -t ext4 /dev/sdc1  4 ...
- Delphi XE以后的版本 程序如何瘦身
第一步:关闭debug infomation. 打开工程后,依次点击project--option--delphi compiler--linking 将右边Debug information改为Fa ...
- select 与 time.After 配合使用的问题
今天在工作中发现了一个有趣的现象. 在一个select中设定了两个定时器,本来预计哪个定时器到达就运行相应指令的,但是发现最终只有时间最短的定时器一直得到执行,其它定时器完全没有得到执行. packa ...
- vue移动端flexible.js结合Muse-ui使用和vux的小坑
因为公司有个项目有webapp的需求,在前期准备的期间考虑过使用ionic,毕竟该项目web端的框架使用的是Angular,项目组的人也都比较熟悉,但是我们毕竟只是做个移动的网页,不想用ionic那么 ...
- 自定义命令杀死 java 进程 alias kjava
alias kjava='ps -ef|grep ProcessName |awk "{print $2}"|xargs kill -9' 上面脚本放在杀JAVA进程中,会出现一些 ...