九度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 }