[Jobdu] 题目1337:寻找最长合法括号序列
- 题目描述:
-
给你一个长度为N的,由’(‘和’)’组成的括号序列,你能找出这个序列中最长的合法括号子序列么?合法括号序列的含义便是,在这个序列中,所有的左括号都有唯一的右括号匹配;所有的右括号都有唯一的左括号匹配。例如:((()))()()便是一个长度为10的合法括号序列,而(()))( 则不是。需要你求解的是,找出最长的合法括号子序列的长度,同时找出具有这样长度的序列个数。
- 输入:
-
测试数据包括多个,每个测试数据包含两行:第一行为一个整数N,其中N不会超过10^6。第二行为一个长度为N的字符串,这个字符串由左括号'('和右括号')'组成。
- 输出:
- 对应每个测试案例,输出一行,其中包含两个整数,分别代表最长合法括号序列的长度和个数,中间由空格隔开。若没有合法的子序列存在,则返回0 1。
- 样例输入:
-
6
(())()
3
))(
- 样例输出:
-
6 1
0 1
用一个bool型的数组来标记匹配情况。
#include <iostream>
#include <stack>
#include <string>
#include <cstring>
using namespace std; int n;
string s; void getRes() {
bool a[s.length()];
memset(a, false, s.length());
stack<int> st;
for (int i = ; i < s.length(); ++i) {
if (s[i] == '(') {
st.push(i);
} else {
if (!st.empty()) {
a[i] = true;
a[st.top()] = true;
st.pop();
}
}
} int max = , cnt = , tmp = ;
for (int i = ; i < s.length(); ++i) {
if (a[i]) {
++tmp;
} else {
tmp = ;
}
if (max == tmp && max != ) {
++cnt;
} else if (max < tmp) {
max = tmp;
cnt = ;
}
}
cout << max << " " << cnt << endl;
} int main() {
while (cin >> n) {
cin >> s;
getRes();
}
return ;
} /**************************************************************
Problem: 1337
User: hupo250
Language: C++
Result: Accepted
Time:310 ms
Memory:7604 kb
****************************************************************/
[Jobdu] 题目1337:寻找最长合法括号序列的更多相关文章
- 九度OJ 1337:寻找最长合法括号序列 (DP)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:839 解决:179 题目描述: 给你一个长度为N的,由'('和')'组成的括号序列,你能找出这个序列中最长的合法括号子序列么?合法括号序列的 ...
- 九度oj题目1342:寻找最长合法括号序列II
题目1342:寻找最长合法括号序列II(25分) 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:886 解决:361 题目描述: 假如给你一个由’(‘和’)’组成的一个随机的括号序列,当然 ...
- 九度oj 题目1337:寻找最长合法括号序列
题目描述: 给你一个长度为N的,由’(‘和’)’组成的括号序列,你能找出这个序列中最长的合法括号子序列么?合法括号序列的含义便是,在这个序列中,所有的左括号都有唯一的右括号匹配:所有的右括号都有唯一的 ...
- 九度oj 题目1342:寻找最长合法括号序列II
题目描述: 假如给你一个由’(‘和’)’组成的一个随机的括号序列,当然,这个括号序列肯定不能保证是左右括号匹配的,所以给你的任务便是去掉其中的一些括号,使得剩下的括号序列能够左右括号匹配且长度最长,即 ...
- 九度OJ 1342:寻找最长合法括号序列II (DP)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:898 解决:366 题目描述: 假如给你一个由'('和')'组成的一个随机的括号序列,当然,这个括号序列肯定不能保证是左右括号匹配的,所以给 ...
- Java 第十一届 蓝桥杯 省模拟赛 合法括号序列
合法括号序列 题目 问题描述 由1对括号,可以组成一种合法括号序列:(). 由2对括号,可以组成两种合法括号序列:()().(()). 由4对括号组成的合法括号序列一共有多少种? 答案提交 这是一道结 ...
- [leetcode]32. Longest Valid Parentheses最长合法括号子串
Given a string containing just the characters '(' and ')', find the length of the longest valid (wel ...
- LongestValidParentheses, 求最长合法括号子串长度-----同类问题ValidParentheses,GenerateParentheses
问题描述:求括号字符串中最长合法子串长度.例如:()((),返回2,而不是4. 算法分析:还是利用栈,和判断合法括号对是一样的. public static int longestValidParen ...
- [Jobdu] 题目1530:最长不重复子串
题目描述: 最长不重复子串就是从一个字符串中找到一个连续子串,该子串中任何两个字符都不能相同,且该子串的长度是最大的. 输入: 输入包含多个测试用例,每组测试用例输入一行由小写英文字符a,b,c... ...
随机推荐
- ucenter创始人密码忘记了,修改方法
简单的:1.在UCenter/data/下找到config.inc.php,打开找到下面2行代码: define('UC_FOUNDERPW', '3858cdf66b0794bfd435af8c0c ...
- uva10392 Factoring Large Numbers
uva10392 Factoring Large Numbers 本文涉及的知识点是,使用线性筛选法得到素数表. Table of Contents 1 题目 2 思路 3 参考 1 题目 ===== ...
- Composer安装和laravel下载
1 下载Composer http://www.phpcomposer.com/ php我先选的是5.5.38的, 但是 laravel5.1 PHP版本 >= 5.5.9 laravel5.2 ...
- ARM地址重映射机制
转:http://blog.csdn.net/yuanzhangmei1/article/details/8395028 ARM体系结构中,系统上电或复位后,处理器将从地址0x0处取第一条指令,因此, ...
- phpstorm不安装apache就可以本地测试PHP
最近再搞个PHP的项目,找了很多发现phpstorm这个非常小巧而且很好用,,顺便推荐一下idea开发android非常不错,这2个IDE都是一家公司的.本文由智动软件(zdexe.com)原创,转载 ...
- asset bundle打包策略
一次引用的 不单独打包 2次的看大小 小的不单独打包 2次以上单独打包 2这个值 可以测一测 取平衡
- Item 33: 避免覆盖(hiding)“通过继承得到的名字”
莎士比亚有一个关于名字的说法."What's in a name?" 他问道,"A rose by any other name would smell as sweet ...
- supervise 用来监控服务,自动启动
Atong介绍的这个工具,挺好用的.supervise 官方网站: https://cr.yp.to/daemontools.html cd /data/test cat test.c #includ ...
- 浏览器兼容性问题解决方案之CSS,已在IE、FF、Chrome测试
当前主浏览器的核心是什么? 1) Trident:IE浏览器使用的内核,该内核程序在1997年的IE4中首次被采用,是微软在Mosaic代码的基础之上修改而来的,并沿用到目前的 IE7.Trident ...
- Node.js 向一个文件添加内容
最简方案: fs.appendFile('message.txt', 'data to append', function (err) { }); 参考文档: http://www.codeweblo ...