UVA 673 Parentheses Balance 解题心得

原题

Description

 

You are given a string consisting of parentheses () and []. A string of this type is said to be correct:

(a)
if it is the empty string
(b)
if A and B are correct, AB is correct,
(c)
if A is correct,  () and  [] is correct.

Write a program that takes a sequence of strings of this type and check their correctness. Your program can assume that the maximum string length is 128.

 

Input 

The file contains a positive integer  n and a sequence of  n strings of parentheses  () and  [], one string a line.

 

Output 

A sequence of  Yes or  No on the output file.

 

Sample Input 

 

3

([])

(([()])))

([()[]()])()

 

Sample Output 

Yes

No

Yes

 

 

分析:简单题,直接用栈就可以

 

我的代码:

 1 #include<iostream>

 2 #include<stack>

 3 #include<cstring>

 4 #include<cstdio>

 5 using namespace std;

 6 

 7 char s[150];

 8 

 9 bool ifpop(const char a, const char b)

10 {

11     if (a == '('&&b == ')')            return 1;

12     if (a == '['&&b == ']')            return 1;

13     return 0;

14 }

15 

16 

17 int main()

18 {

19     int t;

20     cin >> t;

21     getchar();

22     while (t--)

23     {

24         stack<char> z;

25         gets(s);

26         if (s[0] == '\0')

27         {

28             puts("Yes");

29             continue;

30         }

31         else

32         {

33             for (int i = 0;s[i]!='\0'; i++)

34             {

35                 if (z.empty())

36                 {

37                     z.push(s[i]);

38                 }

39                 else

40                 {

41                     if (ifpop(z.top(), s[i]))

42                     {

43                         z.pop();

44                     }

45                     else

46                     {

47                         z.push(s[i]);

48                     }

49                 }

50             }

51             if (z.empty())                puts("Yes");

52             else                        puts("No");

53         }

54 

55         

56     }

57     return 0;

58 }

 

你可能感兴趣的:(uva)