(栈)括号匹配

题目

一个串,只包含(和)。一个(能唯一匹配一个),但是(必须出现在)之前,请判断括号能否完全匹配,如果能,输出配对的括号位置,匹配括号只能嵌套不能交叉。

输入:一个只由(和)构成的字符串,长度<50000。
输出:不匹配输出no,否则,输出yes,接下来若干行,每行输出2整数,空格隔开,表示匹配括号位置,下标从一开始,可以任意顺序输出。

分析与解答:

这个就是遇到左括号把下标压入栈,遇到右括号栈顶出栈,并且做标记,ans[i]=a.top(),意味着有括号的位置在i,左括号的位置在k。
如果循环时候遇见右括号,但是此时栈为空,说明左括号少了,如果循环完不为空,说明左括号多了。
最后遍历一遍标记数组,输出值和下标即可

#include<iostream>
#include<cstdio>
#include<stack>
#include<algorithm>
#include<cstring>
using namespace std;
char s[50010];
int ans[50010];
int main(){scanf("%s",s);stack<int> a;int n=strlen(s),f=1;for(int i=0;i<n;++i){if(s[i]=='('){a.push(i+1);}else{if(!a.empty()){ans[i+1]=a.top();a.pop();}else {f=0;break;}}}if(!a.empty()||!f){cout<<"No";}else{cout<<"Yes"<<endl;for(int i=0;i<=n;++i){if(ans[i]) cout<<ans[i]<<' '<<i<<endl;}}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/560527.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql java文件导入导出_MySQL文件导出和导入

一、导出数据库用mysqldump命令&#xff1a;注意mysql的安装路径&#xff0c;即此命令的路径1、导出数据和表结构&#xff1a;mysqldump -u用户名 -p密码 数据库名 > 数据库名.sql#/usr/local/mysql/bin/ mysqldump -uroot -p abc > abc.sql敲回车后会提示输入密码2、只…

(栈)网页跳转

题目&#xff1a; VISIT打开界面&#xff0c;BACK回退&#xff0c;FORWARD前进。 现在输入n行&#xff0c;每行首先输入一个字符串&#xff0c;如果是VISIT&#xff0c;后面再输入一行不含空格的网址&#xff0c;如果是BACK&#xff0c;回退&#xff0c;如果是FORWARD&#xf…

vv7无法启动显示发动机故障_点火系统故障引起发动机不能启动的排除方法

点火系统故障引起发动机不能启动的排除方法a 外观检查首先察看点火线圈和b 中央高压线试火拔出分电器上的中央高压线&#xff0c;插入一个放电器(或备用火花塞)并将放电器(火花塞)搭铁&#xff0c;然后接通点火开关&#xff0c;在转动发动机时看放电器(火花塞)(汽車维修网 Http…

(vector)堆积木

题目&#xff1a; n块积木&#xff0c;编号1到n&#xff0c;初始时&#xff0c;第i块放在第i个位置。现在&#xff0c;进行a b操作&#xff0c;每次操作把b位置积木全放到a位置上。输出操作完之后每个位置上的木块。 输入:n,m。n代表有n个积木&#xff0c;m代表有m个操作&…

(set)计算集合的并

给两个集合a&#xff0c;b求其并集并由小到大输出&#xff0c;中间空格隔开。 基本的set用法&#xff0c;无非就是空格的时候加一个标记变量记录已输出元素个数。 #include<iostream> #include<cstdio> #include<set> #include<algorithm>using names…

数据生态mysql_数据生态:MySQL复制技术与生产实践

基础篇第1章 的概述1.1 适用场景1.2 数据同步方法1.3 数据同步类型1.4 格式第2章 的基本原理2.1 概述2.2 细节第3章 格式详解3.1 格式概述3.2 格式明细3.2.1 基于STATEMENT和基于ROW的的优缺点3.2.2 使用ROW格式的制日行3.3 如何确定与记录中的和不语句基础篇第1章 的概述1.1 适…

(set)学单词

题目&#xff1a; 输入n&#xff0c;n行操作&#xff0c;每行有一个整数d和一个单词&#xff0c;d0表示将单词存入集合&#xff0c;d1表示测试这个单词是否在集合中&#xff0c;如果是&#xff0c;输出yes否则输出no。单词不区分大小写 样例输入&#xff1a; 5 0 we 0 are 1 f…

织梦重置mysql数据库密码忘记_织梦cms管理员密码忘记了怎么重置找回?

织梦cms是使用比较广泛的一种开源cms程序&#xff0c;使用织梦的朋友基本上都遇到过忘记后台登录密码这个问题&#xff0c;重置登录密码的方法也有很多&#xff0c;今天木子网络教大家的方法是通过mysql数据库来重置修改密码。下面就为大家分享详细的织梦cms管理员密码重置教程…

Lingo计算最优解

建模最后就是知道结果套过程。。 文章目录线性规划二次规划集合段线性规划 model: title 求解线性规划; max2*x13*x2; 2*x1x2<8; 4*x13*x2<15; end结果&#xff1a; Global optimal solution found.Objective value: 15.00000Infeasibilit…

java 扫描类_Java扫描指定包中所有类

1. 扫描类import java.io.File;import java.io.FilenameFilter;import java.io.IOException;import java.net.JarURLConnection;import java.net.URL;import java.util.Enumeration;import java.util.HashMap;import java.util.Map;import java.util.jar.JarEntry;import java.…

Lingo多维数组

∑i1100∑j1200xij280\sum_{i1}^{100}\sum_{j1}^{200}x_{ij}280i1∑100​j1∑200​xij​280 sets: a/1..100/:; b/1..200/:; C(a,b):x; endsets sum(c(i,j):x(i,j))280;∑i1100xij>150\sum_{i1}^{100}x_{ij}>150i1∑100​xij​>150 j1,2,...200j1,2,...200j1,2,...20…

java socket调用接口_java调用websocket接口

项目中需要调用第三方语音电话接口&#xff0c;代码如下&#xff1a;1.pom.xml引入websocket依赖org.java-websocketJava-WebSocket1.3.82.YiWeiDialUtil.javapackage com.yudu.sms.util;import com.alibaba.fastjson.JSONObject;import org.java_websocket.WebSocket;import o…

C语言运行窗口中的暂停与清屏

文章目录用途&#xff1a;样例1&#xff1a;样例2&#xff1a;样例3&#xff1a;样例4&#xff1a;总之&#xff1a;用途&#xff1a; system(“pause”)和system(“cls”)可用于交互界面菜单的显示。 样例1&#xff1a; #include<cstdlib> #include<iostream> …

c 通过jni调用java_使用c通过jni调用java

编译环境:fedora16gcc (GCC) 4.6.3 20120306 (Red Hat 4.6.3-2)java version "1.6.0_31"Java(TM) SE Runtime Environment (build 1.6.0_31-b04)Java HotSpot(TM) Server VM (build 20.6-b01, mixed mode)准备工作:首先需要安装jdk和gcc(或者其他c编译器也可以)并配置…

java容器遍历_高效遍历Java容器详解

通过本文&#xff0c;你可以更深入的学习 Java 语言中 forEach 语法的知识&#xff0c;以及它和 C 语言形式的 for 循环、 Steam API 的对比。简介Java 程序员经常使用容器&#xff0c;比如 ArrayList 和 HashSet。Java 8 中的 lambda 语法和 steaming API 可以让我们更方便的使…

C语言文件与数组之间输入输出操作

C语言文件与数组之间输入输出操作 文件存到数组里面&#xff1a; #include<iostream> #include<fstream> #include<string> #include<cstdio> #include<cstdlib> using namespace std; int main() { fstream fs("test.txt");istream…

java调用scilab_Java调用Scilab-编译运行Javasci v2

1 Scilab简要介绍Scilab 是由法国国家信息、自动化研究院(INRIA)的科学家们开发的“开放源码”软件。Scilab是开源的软件&#xff0c;用户不仅可以在Scilab的许可证条件下自由使用该软件&#xff0c;还可以根据自己需要修改源代码&#xff0c;使之更加符合自身需要。与Matlab类…

(map)出现最多的数

题目&#xff1a; 给n个整数&#xff0c;求里面出现次数最多的数&#xff0c;如果有多个重复出现的数&#xff0c;求出值最大的一个。 样例输入&#xff1a; 10 9 10 27 4 9 10 3 1 2 6 样例输出&#xff1a; 10 2 分析与解答&#xff1a; 遍历map是根据自动键的大小从小到大…

java8 foreach 异常_错误处理 – 在java 8流foreach中抛出异常

我正在使用java 8流,我不能在流的foreach中抛出异常.stream.forEach(m -> {try {if (isInitial) {isInitial false;String outputName new SimpleDateFormat(Constants.HMDBConstants.HMDB_SDF_FILE_NAME).format(new Date());if (location.endsWith(Constants.LOCATION_S…

stl—map

map&#xff1a; 总是记不住&#xff0c;整理一下 #include <map>#include <string>#include <utility>using namespace std;int main() {map<string, int> dict; // dict存放每个名字对应的班级号&#xff0c;初始时为空dict.insert(make_pair("…