zoukankan      html  css  js  c++  java
  • C语言数据结构之栈:括号匹配

    括号匹配这是个很简单的题目,如果只有小括号,就模拟进栈和出栈的过程就行了:

    注:输入时'@'作为结束标志

    #include <stdio.h>
    
    int main()
    {
        freopen("stack.in","r",stdin);
        freopen("stack.out","w",stdout);
        int in=0;
        char s[256];
        scanf("%s",&s);
        int i=0;
        while(s[i]!='@')
        {
            if(s[i]=='(') in++;
            if(s[i]==')') in--;
            if(in<0) break;
            i++;
        }
        if(in==0) printf("YES");
        else printf("NO");
        return 0;
    }

    样例输入1:2*(x+y)/(1-x)@

    样例输出1:YES

    样例输入2:(25+x)*(a*(a+b+b)@

    样例输出2:NO

    至于多括号,就需要创建一个栈了:

    输入无需@做结尾

    #include <stdio.h>
    #include <string.h>
    char stack[256];
    int top=0;
    
    void push(char c)
    {
        top++;stack[top]=c;
    }
    
    int pop()
    {
        top--;return(stack[top+1]);
    }
    
    int main()
    {
        freopen("check.in","r",stdin);
        freopen("check.out","w",stdout);
        char s[256];
        gets(s);
        int lenofs=strlen(s);
        int i;
        char c;
        for(i=0;i<=lenofs-1;i++)
        {
            if(s[i]=='(')
            {
                push('(');
            }
            if(s[i]==')')
            {
                push(')');
                c=stack[top-1];
                if(c=='(')
                {
                    pop();pop();
                }
            }
            if(s[i]=='[')
            {
                push('[');
            }
            if(s[i]==']')
            {
                push(']');
                c=stack[top-1];
                if(c=='[')
                {
                    pop();pop();
                }
            }
            if(top<0) break;
        }
        if(top==0) printf("OK");
        else printf("Wrong");
        return 0;
    }
  • 相关阅读:
    P4999 烦人的数学作业
    P3413 SAC#1
    P2657 [SCOI2009]windy数
    P2602 [ZJOI2010]数字计数
    JSOI2007 建筑抢修
    CF161B Discounts
    Description
    Street Numbers
    Pizza Cutting
    Supermean
  • 原文地址:https://www.cnblogs.com/rjgcs/p/5195975.html
Copyright © 2011-2022 走看看