zoukankan      html  css  js  c++  java
  • URAL 1027 D++ Again

    URAL_1027

        可以将若干种状态用整数标记一下,然后依次扫描一遍text的字符,如果在当前状态下满足某些条件就跳转到下一状态,如果跳入到了非法状态就可以直接break了,最后看扫描完text之后是否处于一个正常的状态即可。

    #include<stdio.h>
    #include<string.h>
    #define MAXD 10010
    int N;
    char b[MAXD], *ch = "=+-*/0123456789";
    void change(int &i, int &pat, int &pre)
    {
        if(pat == 0)
        {
            if(b[i] == '(')
            {
                if(b[i + 1] == '*')
                    ++ i, pre = 0, pat = -1;
                else
                    pat = 1;
            }
            else if(b[i] == ')')
                pat = -2;
        }
        else if(pat > 0)
        {
            if(b[i] == '(')
            {
                if(b[i + 1] == '*')
                    ++ i, pre = pat, pat = -1;
                else
                    ++ pat;
            }
            else if(b[i] == ')')
                -- pat;
            else if(strchr(ch, b[i]) == NULL && b[i] != '\n')
                pat = -2;
        }
        else
        {
            if(b[i] == '*' && b[i + 1] == ')')
                ++ i, pat = pre;
        }
    }
    int check()
    {
        int i, pre = 0, pat = 0;
        b[N] = '\0';
        for(i = 0; i < N; i ++)
        {
            change(i, pat, pre);
            if(pat == -2)
                return 0;
        }
        return pat == 0;
    }
    int main()
    {
        N = 0;
        while(scanf("%c", &b[N]) == 1)
            ++ N;
        if(check())
            printf("YES\n");
        else
            printf("NO\n");
        return 0;
    }
  • 相关阅读:
    蓝桥杯程序设计 剪格子
    sql中 1<> 1=1的用处
    form表单的6种提交方式
    js中添加监听,判断是什么事件
    angular iFrame加载资源问题
    报表往子报表里传入list
    struts 文件上传
    获取运行时的泛型类型
    Dao层抽取BaseDao
    SSH整合总结
  • 原文地址:https://www.cnblogs.com/staginner/p/2479580.html
Copyright © 2011-2022 走看看