括号匹配的检验

#include<iostream>
#include<string.h>
#include<stack>
using namespace std;
//判断括号是否能匹配,如果最后栈为空,则括号匹配,否则括号不匹配;
int main(){
	char ch;
	stack<char> s;
	int n;
	cin>>n;
	while(n--){
		cin>>ch;
		if(s.empty()||ch==‘[‘||ch==‘(‘){
		s.push(ch);
		}
		if(ch==‘]‘){
			if(s.top()==‘[‘)
				s.pop();
			else
				s.push(ch);
		}if(ch==‘)‘){
			if(s.top()==‘(‘)
				s.pop();
			else
				s.push(ch);
		}
	}
	if(s.empty()) cout<<"yes"<<endl;
	else cout<<"no"<<endl;
	system("pause");
	return 0;
}

  

时间: 2024-10-13 13:41:14

括号匹配的检验的相关文章

栈的应用之括号匹配的检验

栈的实际应用很多,其中括号匹配是很常见的例子.下面列出基本算法和源代码,标明注释以便日后复习和翻阅. Description: 利用栈编写满足下列要求的括号匹配检验程序:假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的 顺序随意,即([]())或[([][])]等为正确的格式,[(]或([())或(()])均为不正确的格式.输入一个包含上 述括号的表达式,检验括号是否配对.本题给出部分check()函数,要求将check()函数补充完整,并完成 整个程序. 算法: 代码: 1 void c

数据结构 栈的应用——括号匹配的检验

1 #include <stdio.h> 2 #include <malloc.h> 3 #include <stdlib.h> 4 #include <math.h> 5 6 #define STACK_INIT_SIZE 100 //存储空间初始分配量 7 #define STACKINCREMENT 10 //存储空间分配增量 8 #define SElemType char //当前数据类型 9 10 typedef struct 11 { 12 S

栈的两个应用:括号匹配的检验和表达式求值

1.     括号匹配的检验 假设表达式中含有3种括号:(),[],{},其嵌套的顺序随意.检验括号是否匹配. 基本思想:在算法中设置一个栈,每读入一个括号,若是右括号,则或者与栈顶匹配的左括号相互消解,或者是不合法的情况:若是左括号,则直接压入栈中.若括号匹配,在算法的开始和结束时,栈都应该是空的. 代码: /* * 判断表达式中的括号是否匹配,匹配输出Yes,否则输出No * {(zhang)+[lei]+{lei}={zhangleilei}} -> Yes * {(zhang)+[lei

行编辑程序、括号匹配检验

行编辑程序.括号匹配检验程序都是利用的栈的数据结构.而这两个 小程序也非常好的显示了栈先进后出的思想.由于程序本身很简短.清晰,所 以也就不做多的解释了,直接上代码了. 行编辑程序: #include<iostream> #include<stack> using namespace std; int main() { stack<char> sta; char ch = getchar(); while(ch!=EOF) { while(ch!=EOF&&am

8586 括号匹配检验

今天把数据结构学习的代码拿出来和网友分享一下,应该测试能过! Time Limit:1000MS  Memory Limit:1000K Total Submit:679 Accepted:182 Type: Program   Language: Not Limited Description 利用栈编写满足下列要求的括号匹配检验程序:假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意,即([]())或[([][])]等为正确的格式,[(]或([())或(()])均为不正确的格式.

rwkj 1378 stack(括号匹配)

C++:泛型编程stack(括号匹配)时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte总提交:72 测试通过:39 描述 假设表达式中包含一种括号:圆括号,其嵌套顺序随意,即(()())或(())等为正确的格式,)(或((())或())均为不正确的格式.检验括号是否匹配可以用堆栈来实现当遇到 ( 时进栈,遇到 ) 时出栈进行匹配检验,如果出现不匹配的情况立即结束,否则继续取下一个字符.如果没有遇到不匹配的情况,最后判断栈是否为空,栈为空,括号匹配,否则不

【基础练习】【栈】【映射】codevs3543 括号匹配题解

本来这是一道水题,结果因为我有些大意,弄了一个小时···引以为戒. 这道题比较特殊的一点是四种括号如果存在嵌套必须按照一定的顺序嵌套. 放代码 //codevs3543 括号匹配 #include<stack> #include<cstring> #include<cstdio> #include<map> using namespace std; map<char,int> low; stack<char> s; int n; bo

rwkj 1378 C++:泛型编程stack(括号匹配)

C++:泛型编程stack(括号匹配) 时间限制(普通/Java):1000MS/3000MS            运行内存限制:65536KByte 总提交:176            测试通过:88 描述 假设表达式中包含一种括号:圆括号,其嵌套顺序随意,即(()())或(())等为正确的格式,)(或((())或())均为不正确的格式.检验括号是否匹配可以用堆栈来实现当遇到 ( 时进栈,遇到 ) 时出栈进行匹配检验,如果出现不匹配的情况立即结束,否则继续取下一个字符.如果没有遇到不匹配的

nyoj 括号匹配

这个方程有两种形式,本文采用 if(s[i]=s[j]) dp[i][j]=d[i-1][j-1] dp[i][j]=min(dp[i][k]+dp[k+1][j],dp[i][j]) (i=<k<j) 其实与另一种方法比较:根据j的所有匹配情况取最小值 1.i到j无匹配,取为dp[i][j-1]+1 2.列举所有匹配情况 dp[i][k-1]+dp[k+1][j] 取上述所有情况最小值 两者都能获得正确的结果. 同时两者的初始化为 dp[i][j]==1 if(i==j) 规划方向为: