九度題目1342:尋找最長合法括號序列II
題目1342:尋找最長合法括號序列II(25分)
時間限製:1 秒
內存限製:32 兆
特殊判題:否
提交:732
解決:294
題目描述:
假如給你一個由’(‘和’)’組成的一個隨機的括號序列,當然,這個括號序列肯定不能保證是左右括號匹配的,所以給你的任務便是去掉其中的一些括號,使得剩下的括號序列能夠左右括號匹配且長度最長,即最長的合法括號序列。
輸入:
測試數據包括多個,每個測試數據隻有一行,即一個隨機的括號序列,該括號序列的長度保證不超過106。
輸出:
對於每個測試案例,輸出一個整數,表示最後剩下的最長合法括號序列長度。
樣例輸入:
(())()
(()
樣例輸出:
6
2
思路:以前做過的水題...用棧模擬即可,相同的出棧,不相同繼續進棧....
AC代碼:
#include<stdio.h> #include<string.h> char s[1000010]; char stack[1000010]; int main() { int i,j,n,m,sum; while(gets(s)) { n=strlen(s);m=0; sum=0; for(i=0;i<n;i++) { stack[m++]=s[i]; if(m-2>=0) { if(stack[m-2]=='('&&stack[m-1]==')') { sum+=2; m-=2; } } } printf("%d\n",sum); } return 0; }
最後更新:2017-04-03 12:56:29