九度oj题目1342:寻找最长合法括号序列II

题目1342:寻找最长合法括号序列II(25分)

时间限制:1 秒

内存限制:32 兆

特殊判题:

提交:886

解决:361

题目描述:
假如给你一个由’(‘和’)’组成的一个随机的括号序列,当然,这个括号序列肯定不能保证是左右括号匹配的,所以给你的任务便是去掉其中的一些括号,使得剩下的括号序列能够左右括号匹配且长度最长,即最长的合法括号序列。
输入:
测试数据包括多个,每个测试数据只有一行,即一个随机的括号序列,该括号序列的长度保证不超过106
输出:
对于每个测试案例,输出一个整数,表示最后剩下的最长合法括号序列长度。
样例输入:
(())()
(()
样例输出:
6
2
 1 #include <stdio.h>
 2 #include <cstring>
 3 #include <queue>
 4 #include <iostream>
 5 using namespace std;
 6 char stack[1000005];
 7 int main(){
 8     //freopen("D:\INPUT.txt","r",stdin);
 9     int tail;
10     string s;
11     while(cin>>s){
12         tail=0;
13         memset(stack,0,sizeof(stack));
14         int i;
15         int sum=0;
16         for(i=0;i<s.length();i++){
17             if(s[i]=='('){
18                 stack[++tail]=s[i];
19             }
20             else{
21                 if(tail){
22                     tail--;
23                     sum+=2;
24                 }
25             }
26         }
27         cout<<sum<<endl;
28     }
29     return 0;
30 }
原文地址:https://www.cnblogs.com/Deribs4/p/4632895.html