您的位置:首页 > 其它

uva673 Parentheses Balance(模拟+栈)

2013-07-25 19:13 405 查看
题意:判断给定的括号是否匹配平衡。

思路:用栈来模拟 遇到'(' 或'['的时候入栈, 遇到 ')'或']'跟栈定匹配。匹配成功则栈顶出栈。 最后栈空则括号平衡。陷阱: 小心))))))))))】】】】】】】】括号组

算法复杂度: 有几个符号就要入栈、匹配几次, 所以是o(N)

思路:

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

int main()
{
int n;
stack<char> sta;
scanf("%d%*c", &n);
while (n--) {
// init
while (!sta.empty()) {
sta.pop();
}

// enter
char ch;
while ((ch = getchar()) != '\n') {
if (ch == '(' || ch == '[') {
sta.push(ch);
} else if (ch == ']' || ch == ')'){
if (sta.empty()) {
sta.push(ch);
}

if (ch == ']') {
if (sta.top() != '[') {
} else {
sta.pop();
}
} else {
if (sta.top() != '(') {
} else {
sta.pop();
}
}
}
}

if (sta.empty()) {
printf("Yes\n");
} else {
printf("No\n");
}

}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: