信息学奥赛一本通1354 括弧匹配检验(栈)

1354:括弧匹配检验 1354:括弧匹配检验 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 10984 通过数: 3473 【题目描述】 假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意,如([ ]())或[([ ][ ])]等为正确的匹配,[( ])或([ ]( )或 ( ( ) ) )均为错误的匹配。 现在的问题是,要求检验一个给定表达式中的括弧是否正确匹... 阅读详情

1354:括弧匹配检验


时间限制: 1000 ms         内存限制: 65536 KB
提交数: 18844     通过数: 6119

【题目描述】

设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意,如([ ]())或[([ ][ ])]等为正确的匹配,[( ])或([ ]( )或 ( ( ) ) )均为错误的匹配。

现在的问题是,要求检验一个给定表达式中的括弧是否正确匹配?

输入一个只包含圆括号和方括号的字符串,判断字符串中的括号是否匹配,匹配就输出 “OK” ,不匹配就输出“Wrong”。输入一个字符串:[([][])],输出:OK。

【输入】

输入仅一行字符(字符个数小于255255)。

【输出】

匹配就输出 “OK” ,不匹配就输出“Wrong”。

【输入样例】

[(])

【输出样例】

Wrong

提交 统计信息 提交记录


教学备忘录:编辑
无
给学生提示:编辑
无

与一本通1353题类似,遇到 ( 或 [ 将其入栈,

遇到 ) 判断栈顶元素是否为 ( ,若是则弹出栈顶元素,若不是则括号不匹配,

遇到 ] 判断栈顶元素是否为 [ ,若是则弹出栈顶元素,若不是则括号不匹配

#include <iostream>
#include <stack>
#include <cstdio>
#include <string>
using namespace std;

stack <char> s;

int main()
{
	string str;
	getline(cin, str);
	int len = str.length(), cnt = 1;
	char c;
	for (int i = 0; i < len; i ++) {
		if (str[i] == '(' || str[i] == '[') {
			s.push(str[i]);
		}
		else if (str[i] == ')') {
			if (s.empty()) {
				cnt = 0; // 用来标记是否匹配,下同
				break;
				// cout << "Wrong" << endl; // 或者直接输出Wrong后return 0;
				// return 0;
			}
			c = s.top();
			if (c == '(') {
				s.pop();
			}
			else {
				cnt = 0; // 用来标记
				break;
				// cout << "Wrong" << endl; // 或者直接输出Wrong后return 0;
				// return 0;
			}
		}
		else if (str[i] == ']') {
			if (s.empty()) {
				cnt = 0; // 用来标记
				break;
				// cout << "Wrong" << endl; // 或者直接输出Wrong后return 0;
				// return 0;
			}
			c = s.top();
			if (c == '[') {
				s.pop();
			}
			else {
				cnt = 0; // 用来标记
				break;
				// cout << "Wrong" << endl; // 或者直接输出Wrong后return 0;
				// return 0;
			}
		}
	}
	if (s.empty() && cnt != 0) {
		cout << "OK" << endl;
	}
	else {
		cout << "Wrong" << endl;
	}
	return 0;
}

用字符组模拟栈

#include <iostream>
#include <stack>
#include <cstdio>
#include <string>
using namespace std;

int main()
{
	char s[1005];
	string str;
	getline(cin, str);
	int len = str.length(), cnt = 1, tmp = 0;
	char c;
	for (int i = 0; i < len; i ++) {
		if (str[i] == '(' || str[i] == '[') {
			s[tmp++] = str[i];
		}
		else if (str[i] == ')') {
			if (tmp == 0) {
				cnt = 0; // 用来标记是否匹配,下同
				break;
				// cout << "Wrong" << endl; // 或者直接输出Wrong后return 0;
				// return 0;
			}
			c = s[tmp-1];
			if (c == '(') {
				tmp --;
			}
			else {
				cnt = 0; // 用来标记
				break;
				// cout << "Wrong" << endl; // 或者直接输出Wrong后return 0;
				// return 0;
			}
		}
		else if (str[i] == ']') {
			if (tmp == 0) {
				cnt = 0; // 用来标记
				break;
				// cout << "Wrong" << endl; // 或者直接输出Wrong后return 0;
				// return 0;
			}
			c = s[tmp-1];
			if (c == '[') {
				tmp --;
			}
			else {
				cnt = 0; // 用来标记
				break;
				// cout << "Wrong" << endl; // 或者直接输出Wrong后return 0;
				// return 0;
			}
		}
	}
	if (tmp == 0 && cnt != 0) {
		cout << "OK" << endl;
	}
	else {
		cout << "Wrong" << endl;
	}
	return 0;
}

 

1354:括弧匹配检验(信息学奥赛一本通) 括弧匹配检验 阅读详情

相关推荐

栈数据结构原理:从力扣 20 题到信息学奥赛 1354 题的 2 种应用解析

本文深入解析栈数据结构原理及其在括号匹配问题中的应用,从力扣20题到信息学奥赛1354题,详细对比两种场景下的解题策略与优化技巧。通过代码示例展示栈的LIFO特性如何高效解决括弧匹配问题,并扩展讨论栈在算法竞赛中的其他典型应用场景。

weixin_30536861的博客 275

信息学奥赛一本通 1354:括弧匹配检验

ybt 1354:括弧匹配检验遍历字符串,左括号入栈,遇到右括号时,看栈顶括号与右括号是否能配对。如果两个括号都是小括号或中括号,那么二者配对,左括号出栈。否则括号不匹配。 如果遍历到右括号时,发现栈空,那么存在右括号无法匹配。 如果遍历结束时,栈不为空,那么存在左括号无法匹配。...

君义NOIP的博客 4857

利用栈实现括号匹配的检验

利用栈实现括号匹配的检验,存储括号字符的数组通过malloc实现动态分配长度,匹配函数的第一个参数为指向字符的指针(即为存储括号字符的数组的首地址)和一个整数(即为括号字符的总数,为括号个数的2倍),将左括号字符压栈,用栈顶元素和当前非左括号字符匹配,匹配为一对括号,则将栈顶元素弹出,否则匹配失败,程序结束执行

信息学奥赛一本通 数据结构 1354:括弧匹配检验 第一章 栈

输入一个只包含圆括号和方括号的字符串,判断字符串中的括号是否匹配,匹配就输出 “时间限制: 1000 ms 内存限制: 65536 KB。假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意,如。现在的问题是,要求检验一个给定表达式中的括弧是否正确匹配?输入仅一行字符(字符个数小于255255)。1354:括弧匹配检验。” ,不匹配就输出“” ,不匹配就输出“

长春高老师编程 612

【项目案例】前后端分离项目 【Web图书管理系统 】SpringBoot + Vue + Element UI + Mysql

Web图书管理系统

激流丶的博客 5396

用STM32F103单片机控制电调制动无刷电机

用电调控制无刷电机制作遥控飞艇 蓝牙控制 调控电调 无刷电机 用电调控制无刷电机制作遥控飞艇 代码区 mian.c #include "delay.h" #include "sys.h" #include "usart.h" #include "usart3.h" #include "timer.h" #include "led.h" #include "key.h" int main(v...

子非鱼 的博客 2万+

信息学奥赛一本通 1354—【括弧匹配检验】【信息学奥赛一本通(数据结构)01】(栈)

信息学奥赛一本通 1354—【括弧匹配检验】(栈)

2301_80065984的博客 592

自抗扰控制(ADRC)原理与MATLAB实现详解

自抗扰控制(ADRC)是一种先进的鲁棒控制策略,其核心在于通过扩张状态观测器(ESO)实时估计并补偿系统总扰动。相比传统PID控制,ADRC不依赖精确数学模型,特别适合处理非线性、时变系统。从控制原理看,ADRC将系统内部动态和外部扰动统一建模,通过带宽参数化方法实现快速响应与强抗扰能力。在工程实践中,ADRC已成功应用于无人机飞控、伺服系统等场景,MATLAB仿真显示其上升时间可比PID提升46%,抗扰动恢复时间缩短60%。典型实现包含ESO设计、扰动补偿和PD控制三部分,参数整定遵循ω₀=3~5倍系统带

weixin_33585822的博客 95

《信息学奥赛》1354:括弧匹配检验

** 1354:括弧匹配检验 ** 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 9963 通过数: 3195 【题目描述】 假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意,如([ ]())或[([ ][ ])]等为正确的匹配,[( ])或([ ]( )或 ( ( ) ) )均为错误的匹配。 现在的问题是,要求检验一个给定表达式中的括弧是否正确匹配? 输入...

weixin_43602440的博客 836

VBA一键汇总多个工作簿-名称相同的工作表-的指定区域数据

VBA一键汇总多个工作簿-名称相同的工作表-的指定区域数据 日常工作,我们经常需要汇总相同格式的工作簿的某个工作表的数据 如1月业绩、2月业绩。。。。12月业绩等 姓名 数量 数据22 22 数据23 23 数据24 24 数据25 25 数据26 26 数据27 27 数据28 28 数据29 29 数据30 30 数据31 31 数据32 32 数据33 33 数据34

陈表达的博客 5981

海康威视摄像机SDK二次开发--提取音频保存至文件

由于最近在开发海康威视摄像头,特此记录一下如何提取音频数据,这里主要依靠语音对讲返回的音频数据,通过回调函数写入文件中,加个WAV头即可播放,编码格式可以自己设置在代码中有注释 文件结构 其中CameraInfo内容可以参看海康威视摄像机SDK二次开发–实时预览视频流保存到指定文件中 HIKSDKSaveRealData中的内容 package ClientDemo; import ClientDemo.CameraInfo; import com.sun.jna.NativeLong; import

RichardoMu的博客 3172

信息学奥赛一本通题目解析:1354:括弧匹配检验

栈是一种先进后出(LIFO)的数据结构,非常适合用来处理这类括号匹配问题。这种方法有效地利用了栈的LIFO特性,确保了每个左括号都能找到其对应位置最近的匹配右括号。输入一个只包含圆括号和方括号的字符串,判断字符串中的括号是否匹配,匹配就输出 “假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意,如。现在的问题是,要求检验一个给定表达式中的括弧是否正确匹配?输入仅一行字符(字符个数小于255255)。:从头到尾遍历给定的字符串。” ,不匹配就输出“” ,不匹配就输出“

lan_in的博客 988

Claude Code Auto Memory 的 Storage Location,SAP ABAP 项目里的本地记忆仓库应该怎么理解

本文介绍了 SAP ABAP 项目中 Claude Code 的 auto memory 机制,重点探讨了其存储位置的设计原理。auto memory 不是存储在项目目录中,而是默认位于 ~/.claude/projects/<project>/memory/,其中 <project> 基于 Git 仓库路径推导,确保同一仓库下的所有工作目录和分支共享记忆。记忆目录包含入口文件 MEMORY.md(仅加载前 200 行)和详细主题文件,这种分层设计类似 CDS View 架构思想。文章还分析了按 Git 仓

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 100

C++ STL stack 实战:信息学奥赛 1354 题括弧匹配检验的 2 种解法对比

本文深入解析了C++ STL stack在信息学奥赛1354题括弧匹配检验中的应用,对比了数组模拟栈与STL stack的两种解法。通过详细代码示例和性能分析,展示了STL stack在代码简洁性、安全性和可维护性上的优势,同时提供了优化技巧和边界处理建议,帮助竞赛选手和开发者高效解决括号匹配问题。

weixin_29200485的博客 246

MIC:最大信息系数

目录 1. 概念 1.1 MIC 1.2 互信息 2.MIC的优点 3. 算法原理 3.1 MIC公式原理 3.2MIC计算步骤 (1)计算最大互信息值 (2)对最大的互信息值进行归一化 (3)选择不同尺度下互信息的最大值作为MIC值 4. 代码实现 6. 其他方法 1. 概念 1.1 MIC MIC,即(Maximal Information...

满腹的小不甘 5万+

apt-get update时出现GPG error:... bionic InRelease:The following signatures were invalid: EXPKEYS解决方案

本文主要介绍了apt-get update时出现W: GPG error: … bionic InRelease: The following signatures were invalid: EXPKEYSIG B7B3B788A8D3785C MySQL Release Engineering E: The repository ‘… bionic InRelease’ is not signed.解决方案,希望能对使用Ubuntu系统的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 11万+

【题解-信息学奥赛一本通】1354:括弧匹配检验

假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意,如([ ]())或[([ ][ ])]等为正确的匹配,[( ])或([ ]( )或 ( ( ) ) )均为错误的匹配。输入一个只包含圆括号和方括号的字符串,判断字符串中的括号是否匹配,匹配就输出 “OK” ,不匹配就输出“Wrong”。输入一个字符串:[([][])],输出:OK。现在的问题是,要求检验一个给定表达式中的括弧是否正确匹配?匹配就输出 “OK” ,不匹配就输出“Wrong”。输入仅一行字符(字符个数小于255)。

写代码的犄角旮瘩 171

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

信息学奥赛一本通,1354括弧匹配检验

各位大神们,本人第一次发题解,不喜勿喷!

wmh100400的博客 597

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

信息学奥赛一本通(1354:括弧匹配检验)

信息学奥赛一本通(1354:括弧匹配检验) 【题目描述】 假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意,如([ ]())或[([ ][ ])]等为正确的匹配,[( ])或([ ]( )或 ( ( ) ) )均为错误的匹配。 现在的问题是,要求检验一个给定表达式中的括弧是否正确匹配? 输入一个只包含圆括号和方括号的字符串,判断字符串中的括号是否匹配,匹配就输出 “OK” ,不匹配就输出“Wrong”。输入一个字符串:[([][])],输出:OK。 【输入】 输入仅一行字符(字符个数小于25

weixin_44933408的博客 518

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

信息学奥赛一本通(C++版)第三部分 数据结构 第一章 栈

第一章 栈 T1331 : 后缀表达式的值 【题目描述】   从键盘读入一个后缀表达式(字符串),只含有0-9组成的运算数及加(+)、减(—)、乘(*)、除(/)四种运算符。每个运算数之间用一个空格隔开,不需要判断给你的表达式是否合法。以@作为结束标志。   比如,16–9*(4+3)转换成后缀表达式为:16□9□4□3□+*–,在字符数组A中的形式为:   栈中的变化情况:...

diaearth 3187

信息学奥赛一本通数据结构1 - 栈

这个程序的时间复杂度为O(n * m),其中n为字符串的数量,m为字符串的平均长度。对于每个字符串,我们需要遍历其中的每个字符,因此时间复杂度为O(m)。空间复杂度为O(m),因为在最坏情况下,栈中需要存储所有的左括号。遍历字符串的每个字符,遇到左括号时将其压入栈中,遇到右括号时检查栈顶元素是否为对应的左括号,并且检查括号的嵌套顺序是否正确。这个程序的时间复杂度为O(n),其中n为表达式的长度,因为我们需要遍历表达式的每个字符。空间复杂度为O(n),因为在最坏情况下,栈中需要存储所有的左括号。

m0_46192147的博客 1259

括弧匹配检验(信息学奥赛一本通-1354)

假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意,如([ ]())或[([ ][ ])]等为正确的匹配,[( ])或([ ]( )或 ( ( ) ) )均为错误的匹配。输入一个只包含圆括号和方括号的字符串,判断字符串中的括号是否匹配,匹配就输出 “OK” ,不匹配就输出“Wrong”。输入一个字符串:[([][])],输出:OK。现在的问题是,要求检验一个给定表达式中的括弧是否正确匹配?匹配就输出 “OK” ,不匹配就输出“Wrong”。输入仅一行字符(字符个数小于255)。

2402_84298973的博客 284

信息学奥赛一本通(C++)在线评测系统——基础(三)数据结构 —— 1354:括弧匹配检验

时间限制: 1000 ms 内存限制: 65536 KB 提交数: 5098 通过数: 1642 【题目描述】 假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意,如([ ]())或[([ ][ ])]等为正确的匹配,[( ])或([ ]( )或 ( ( ) ) )均为错误的匹配。 现在的问题是,要求检验一个给定表达式中的括弧是否正确匹配? 输入一个只包含圆括号...

Alex 1878
上一篇: 信息学奥赛一本通1353 表达式括号匹配(stack) (栈)
下一篇: 信息学奥赛一本通1355 字符串匹配问题(strs) (栈)
Star77777
博客等级 码龄10年 104粉丝 95原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值