UVA 673 (暑假-线性表 -A - Parentheses Balance)

#include <cstdio>
#include <stack>
#include <cstring>
using namespace std;

int main() {
	int n;
	scanf("%d", &n);
	getchar();
	while (n--) {
		char str[200];
		gets(str);
		int len = strlen(str);
		stack<char> s;
		for (int i = 0; i < len; i++) {
			if (s.empty() && str[i] != '(' && str[i] != '[') {
				s.push(str[i]);
				break;
			}
			if (str[i] != ')' && str[i] != ']')
				s.push(str[i]);
			else if (str[i] == ')') {
				if (s.top() != '(')
					break;
				else
					s.pop();
			}
			else {
				if (s.top() != '[')
					break;
				else
					s.pop();
			}
		}
		if (!s.empty())
			printf("No\n");
		else
			printf("Yes\n");
	}
	return 0;
}

你可能感兴趣的:(UVA 673 (暑假-线性表 -A - Parentheses Balance))