题解 P1944 最长括号匹配_NOI导刊2009提高(1)
2024-08-30 20:36:40
栈,模拟
- 把每个元素逐个入栈
- 如果和栈顶元素匹配,那么一块弹出去,同时标记这里是可匹配的。
- 取出连续的,最长的可匹配的序列即可。
#include <iostream>
#include <stdio.h>
#include <string.h>
#define re register
#define Clean(X,K) memset(X,K,sizeof(X))
using namespace std ;
const int Maxl = 1000005 ;
string S ;
char A[Maxl] ;
int Ans = 0 , Now = 0 , Top = 1 , M[Maxl] , Lc[Maxl] , From;
int main () {
// freopen ("P1944.in" , "r" , stdin) ;
getline (cin , S) ;
int L = S.length() ;
Clean(M , 0) , Clean(A , 0);
for (re int i = 0 ; i < L ; ++ i) {
if (S[i] == ')' && A[Top] == '(' ) {
-- Top , M[i] = M[Lc[Top + 1]] = 1 ;
continue ;
}
if (S[i] == ']' && A[Top] == '[' ) {
-- Top , M[i] = M[Lc[Top + 1]] = 1 ;
continue ;
}
A[++ Top] = S[i] ;
Lc[Top] = i ;
}
for (re int i = 0 ; i < L; ++ i) {
if (M[i]) ++ Now ;
else {
if (Now > Ans) {
Ans = Now ;
From = i - 1 ;
}
Now = 0 ;
}
}
int St=0;
for (re int i = From ; i >= 0 ; -- i ) if (!M[i]) {
St = i + 1;
break ;
};
for (re int i = St ; i <= From ; ++ i) putchar(S[i]) ;
fclose (stdin) , fclose (stdout) ;
return 0 ;
}
最新文章
- 让python在hadoop上跑起来
- jquery-drawsvg — HTML5轻量级插件
- [转] java书籍(给Java程序猿们推荐一些值得一看的好书 + 7本免费的Java电子书和教程 )
- UCOS2_STM32F1移植详细过程(二)
- 【每日scrum】NO.7
- android 拦截事件
- 一些常用css技巧的为什么(二)我所理解的line-height
- centos wordpress
- Fedora 下 安装 chrome
- iOS开发——生成二维码——工具类
- Visual Studio 2013如何破解(密钥激活)
- 【Ecstore2.0】第三方信任登陆问题解决_备忘
- Java基础学习笔记1
- centos下yum安装crontab+mysql自动备份
- ios扫雷
- 使用百度云同步盘和Git Extensions进行代码托管
- linux tar命令 压缩、打包、解压 详解
- ASP.NET如何通过后台数据库提供的链接播放视频(不使用外置插件)
- .NET Core微服务之基于Consul实现服务治理(续)
- 3D中的旋转变换
热门文章
- Git报错 bad numeric config value &#39;100000&#39; for &#39;pack.windowmemory&#39;: out of range
- JAVA之enum类详解
- 第3章 简单的C程序设计——顺序程序设计
- 跟我一起学opencv 第二课之图像的掩膜操作
- Python--开发简单爬虫
- java~IDEA引用包时分组所有java包
- Springboot 系列(五)Spring Boot web 开发之静态资源和模版引擎
- [Javascript] js的类和对象
- Abp.Castle.Log4Net : Method &#39;get_IsTraceEnabled&#39; does not have an implementation
- Redis分布式队列和缓存更新