nyoj 2 括号配对问题 栈

nyoj 2 括号配对问题

题目链接:

http://acm.nyist.net/JudgeOnline/problem.php?pid=2

思路:

栈:'(' '['入栈,遇到 ']' ')'出栈
出现RE错误是因为如果栈顶元素需要出栈的时候没有先判空

代码:

#include <iostream>
#include <stack>
#include <stdio.h>
#include <string.h>
using namespace std;
stack<char> st;
char s[10005];
int main() {
    int n;
    scanf("%d",&n);
    while(n--) {
        scanf("%s",s);
        stack<char> st;
        int len=strlen(s),flag=1;
        for(int i=0;i<len;++i) {
            if(s[i]=='['||s[i]=='(') st.push(s[i]);
            else if(s[i]==']') {
                if(st.empty()) {
                    flag=0;
                    break;
                }
                else if(st.top()=='[') st.pop();
                else {
                    flag=0;
                    break;
                }
            } else {
                if(st.empty()) {
                    flag=0;
                    break;
                }
                else if(st.top()=='(') st.pop();
                else {
                    flag=0;
                    break;
                }
            }
        }
        if(!st.empty()) flag=0;
        if(flag) printf("Yes
");
        else printf("No
");
    }
    return 0;
}
原文地址:https://www.cnblogs.com/lemonbiscuit/p/7906763.html