uva673 Parentheses Balance(模拟+栈)

来源:互联网 发布:安卓没想到java卡 编辑:程序博客网 时间:2024/05/10 01:30

题意:判断给定的括号是否匹配平衡。


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


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


思路:

#include <cstdio>#include <stack>using namespace std;int main(){int n;stack<char> sta;scanf("%d%*c", &n);while (n--) {// initwhile (!sta.empty()) {sta.pop();}// enterchar 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;}


原创粉丝点击