精华内容
下载资源
问答
  • 表达式括号匹配

    2020-01-13 18:27:51
    @TOC表达式括号匹配 #include #include #include #include //头文件 using namespace std;//不加这个会出错(告诉一些新人的,大佬勿喷) int ok=0;//状态的变量(大佬千万别改bool) char a;//记录字符 int i=0;...

    @TOC表达式括号匹配
    #include
    #include
    #include
    #include //头文件
    using namespace std;//不加这个会出错(告诉一些新人的,大佬勿喷)
    int ok=0;//状态的变量(大佬千万别改bool)
    char a;//记录字符
    int i=0;//之后的特判要用
    int main()
    {
    for (;;i++)//很无脑对不对,但是很有用
    {
    a=getchar();//读入
    if (i0&&a’)’) {printf (“NO”);return 0;}//特判:第一个为‘)’,结束,不对,自己想想看
    if (a==’(’) ok++;//是左括号就++
    if (a==’)’) ok–;//是有括号就–
    if (ok<0) {printf (“NO”);return 0;}//特判:多了右括号,结束(多了左没事,但不可以多右,想想看)
    if (a==’@’) {if (!ok) printf (“YES”);else printf (“NO”);return 0;}
    //特判无效:比较ok是不是为0(是0表示左右括号都一样多,结束)
    }
    }表达式括号匹配

    展开全文
  • 判断表达式括号匹配的算法代码如下:#define MAXSIZE 100typedef char ELEMTYPE;typedef struct {ELEMTYPE data[MAXSIZE];int top;}SQSTRACK;//定义顺序栈int pipei(char *p){SQSTRACK l;SQSTRACK *s;int x=0;s=&...

    判断表达式括号匹配的算法

    代码如下:

    #define MAXSIZE 100

    typedef char ELEMTYPE;

    typedef struct {

    ELEMTYPE data[MAXSIZE];

    int top;

    }SQSTRACK;//定义顺序栈

    int pipei(char *p)

    {

    SQSTRACK l;

    SQSTRACK *s;

    int x=0;

    s=&l;

    s->top=-1;

    while(p) //在数组中循环查找括号'('和')'

    {

    if(*p='(') //如果找到括号'(',则将其入栈

    {s->top++;

    s->data[s->top]=*p; }

    else if(*p==')') //如果找到括号')',则将弹出栈顶元素

    s->top--;

    p++;

    }

    if(s->top=-1) return 0; //如果栈为空则括号匹配,返回0

    else

    return 1; //如果栈不空,则括号不匹配,返回1

    }

    void main()

    {

    char s[]="12+(3*(20/4(-8)*6";

    int x;

    x=pipei(s);

    printf("shi:%d",x);

    getch();

    }

    可是在运行时总是返回0,按照给定的数组应该返回1才对,不知哪里出了错误,请给看看好吗?谢谢了

    展开全文
  • C++编程,表达式括号匹配配对问题的实验报告
  • 表达式括号匹配 洛谷P1739 Hi~ 今天我们来看一下这道题 简洁明了的题目 我喜欢~ 这道题可以用栈解决 但是也有更初级其他办法 最直观的思路就是 一个变量记左括号 一个记右括号 加一些特殊判断 最后看左括号数量和...

    表达式括号匹配

    洛谷P1739

    Hi~ 今天我们来看一下这道题
    在这里插入图片描述
    简洁明了的题目 我喜欢~

    这道题可以用栈解决 但是也有更初级其他办法

    最直观的思路就是 一个变量记左括号 一个记右括号 加一些特殊判断 最后看左括号数量和右括号说量是否一样

    简洁一点的话 可以把左右记在一个变量里

    总结一下 就是一个变量a=0 遇到左括号++ 遇到右括号-- 如果判断到第一个是右括号直接cout 如果a已经小于零(右括号已经比左括号多了)也直接cout

    自己试一下吧

    //
    //  main.cpp
    //  表达式括号匹配
    //
    //  Created by Helen on 2019/12/25.
    //  Copyright © 2019 Helen. All rights reserved.
    //
    
    #include <iostream>
    #include <cstring>
    using namespace std;
    char c;
    int ans=0;
    int main ()
    {
        for (int i=0;;i++)
        {
            cin >> c;
            if (i==0 && c==')')
            {
                cout << "NO" << endl;
                return 0;
            }
            if (c=='(')
                ans++;
            if (c==')')
                ans--;
            if (ans<0)
            {
                cout << "NO" << endl;
                return 0;
            }
            if (c=='@')
            {
                if (ans==0)
                {
                    cout << "YES" << endl;
                    return 0;
                }
                cout << "NO" << endl;
                return 0;
            }
        }
    }
    
    

    Understand?
    Au revoir~
    ----------------------------------------✂︎---------------------------------------------
    此题解已经AC 欢迎指出更多优化方法~

    展开全文
  • P1739 表达式括号匹配

    2020-03-26 22:41:59
    P1739 表达式括号匹配 题目描述 假设一个表达式有英文字母(小写)、运算符(+,—,*,/)和左右小(圆)括号构成,以“@”作为表达式的结束符。请编写一个程序检查表达式中的左右圆括号是否匹配,若匹配,则返回...

    P1739 表达式括号匹配

    题目描述
    假设一个表达式有英文字母(小写)、运算符(+,—,*,/)和左右小(圆)括号构成,以“@”作为表达式的结束符。请编写一个程序检查表达式中的左右圆括号是否匹配,若匹配,则返回“YES”;否则返回“NO”。表达式长度小于255,左圆括号少于20个。

    输入格式
    一行:表达式

    输出格式
    一行:“YES” 或“NO”

    输入输出样例

    输入 #1

    2*(x+y)/(1-x)@
    

    输出 #1

    YES
    

    输入 #2

    输出 #2

    NO
    

    思路:利用栈的思想进行匹配,设置栈为bool类型,遇到“( ",将true压入栈,遇到“ )”,进行出栈操作。

    #include<iostream>
    #include<string>
    #include<cstdio>
    #include<stack>
    using namespace std;
    //思路:运用栈的的方法,将“( ”压入栈,“)”用来进行检测
    string s;//输入的字符串
    stack<bool> st;//栈
    
    int main()
    {
        bool flag=true;
        cin>>s;
        for(int i=0;s[i]!='@';i++){
            if(s[i]=='('){
                st.push(true);
            }
            else if(s[i]==')'){
                if(st.empty()){//如果匹配到")",且栈为空的话,肯定不能进行出栈操作了
                    flag=false;
                    break;//直接跳出循环,不用考虑了
                }
                st.pop();//否则就弹出匹配的一个"("
            }
        }
        if(!st.empty()){//最后一个栈内元素不为空,说明没有匹配
            flag=false;
        }
        printf("%s\n",flag?"YES":"NO");
        return 0;
    }
    

    在这里插入图片描述

    展开全文
  • C语言实现表达式括号匹配算法及程序
  • luogu1739 表达式括号匹配 时空限制 1000ms/128MB 题目描述 假设一个表达式有英文字母(小写)、运算符(+,—,*,/)和左右小(圆)括号构成,以“@”作为表达式的结束符。请编写一个程序检查表达式中的左右...
  • P1739 表达式括号匹配 题目描述 假设一个表达式有英文字母(小写)、运算符(+,—,*,/)和左右小(圆)括号构成,以“@”作为表达式的结束符。请编写一个程序检查表达式中的左右圆括号是否匹配,若匹配,则返回...
  • 洛谷 P1739 表达式括号匹配 思路: 只需用一个变量l来记录左括号的值,每次遇到左括号l++,遇到右括号时l--,此时若l<0,说明右括号没有左括号匹配,直接输出NO。最后判断l是否等于0,若等于0,则输出YES,若不...
  • 栈(洛谷P1739 表达式括号匹配) 题目 见题目链接 题目链接表达式括号匹配 - 洛谷 输入 见题目链接 输出 见题目链接 样例 见题目链接 题解 用一个栈来存储做括号,读取输入的时候,每读到一个左括号则压入栈,碰到右...
  • 表达式括号匹配 题目描述 假设一个表达式有英文字母(小写)、运算符(+,—,*,/)和左右小(圆)括号构成,以“@”作为表达式的结束符。请编写一个程序检查表达式中的左右圆括号是否匹配,若匹配,则返回“YES”...
  • 1353:表达式括号匹配(stack) 时间限制: 1000 ms 内存限制: 65536 KB 【题目描述】 假设一个表达式有英文字母(小写)、运算符(+,—,∗,/)和左右小(圆)括号构成,以“@”作为表达式的结束符。请编写一个程序...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,385
精华内容 2,554
关键字:

表达式括号匹配