9 도 1342 최 장 합 법 괄호 찾기 II

http://ac.jobdu.com/problem.php?id=1342
처음에는 문 제 를 잘 읽 지 못 했 습 니 다. "괄호 를 빼 세 요." 사실은 다시 말 하면 괄호 가 얼마나 일치 하 는 지 보 는 것 입 니 다................................................................
 
 
 1 #include 
2 #include <string.h>
3 #include
4 #include
5 using namespace std;
6 int N;
7 char str[1000002];
8 bool flags[1000002] = { false };
9
10 stack < int >S;
11 bool match(char a,char b)
12 {
13 if(a=='('&&b==')')
14 return true;
15 return false;
16 }
17 int main ()
18 {
19 while (scanf("%s",str)!= EOF)
20 {
21 //scanf ("%s", str);
22 while (!S.empty ())
23 S.pop ();
24 memset (flags, false, sizeof (flags));
25 S.push (0);
26 int i, j;
27 int len = strlen (str) - 1;
28 for (i = 1; i <= len; i++)
29 {
30 if (S.empty ())
31 S.push (i);
32 else if (match (str[S.top ()], str[i]))
33 {
34 flags[i] = true;
35 flags[S.top ()] = true;
36 S.pop ();
37 }
38 else
39 S.push (i);
40 }
41 int max_len=0;
42 for(i=0;i<=len;i++)
43 if(flags[i])
44 max_len++;
45 printf("%d
",max_len);
46 }
47
48 }

다음으로 전송:https://www.cnblogs.com/yangce/archive/2011/12/09/2281712.html

좋은 웹페이지 즐겨찾기