• 等价表达式


    小目标的最后一步。

    原题链接:https://www.luogu.org/problem/show?pid=1054

    精力不足,代码工作可能要放在后几天。。。

    思路已经明确了,我说一下。

    这道题的大意是给出若干表达式,问这些表达式的值和初始表达式的值是不是相等。

    问题中给出了一个未知数a,这个a没有什么很好的解决办法, 通常的也是其他题解常用的那就是自己给a赋值,只要别赋0啊1啊-1之类的可能冲突概率大的值就好。

    (可以赋一个妹子生日什么的增加RP

    在说具体做法之前,我想我应该说一下一些细节问题。

    1.判断输入的合法性,看样子输入里面有左右括号不相等的情况,输入时最好加一个判断。

    2.算出来的答案可能会非常大,记得开longlong并且边算边取模。模数也得自己选,随便找一个大质数就好。

    接下来是具体做法,表达式的处理。

    通过输入样例可以判断,输入的是中缀表达式。一开始我想的是把中缀转后缀,然后代入求值并判断,不过后来我发现,首先,转后缀表达式的过程虽然好想但非常难写,其次,求中缀表达式有自己的方法,所以根本不需要转成后缀表达式。

    接下来的问题就转化成了怎么求中缀表达式的值了。

    正常向的方法是开两个栈,一个数字栈一个符号栈,顺序读入,遇到数字直接压入数字栈,遇到操作符时,并且这个运算符的优先级要低于之前一个,那就先把之前那个操作弹出来计算。

    如果遇到左括号,就一直读,读到右括号时将括号内的表达式按照之前的规则求值。

    最后再把栈里没算完的算完就是最后结果了。然后就是比对输出。

  • 相关阅读:
    maven
    sublime text
    ios category
    python
    activiti
    出版社
    gradle
    selenium
    spring
    Ansible状态管理
  • 原文地址:https://www.cnblogs.com/OIerShawnZhou/p/7604576.html
Copyright © 2020-2023  润新知