求助

P1449 后缀表达式

Glooda @ 2023-04-20 21:09:23

为啥没法输出啊,而且时间复杂度高的快要炸了

代码是参考洛谷的深入浅出上15-5内容上的算法写的

声明:没有照搬书上的代码,是借鉴后参考着自己手写的代码,算法是参照书上的,但代码绝对自己写的
#include<bits/stdc++.h>
using namespace std;
int main(){
    int s,a,b;
    stack<int> n;//
    char text;
    do{
        text=getchar();//每次只读入一个 
        if(text>='0'||text<='9'){
            s=s*10+text-'0';
        }
        else
        if(text='.'){
            n.push(s);
            s=0;
        }
        else if(text!='@'){
            a=n.top();
            n.pop();
            b=n.top();//此时栈中前两个元素待运算
            if(text=='+'){
                n.push(a+b);//压入 
            }
            else
            if(text=='-'){
                n.push(b-a);
            }
            else
            if(text=='*'){
                n.push(a*b);
            }
            else
            if(text=='/'){
                n.push(a/b); 
            }
        }
        }while(text!='@');
    printf("%d/n",n.top());
    return 0;
}

希望dalao能解答疑问,初次接触数据结构


by Glooda @ 2023-04-20 21:13:20

个人是这样理解书上的算法

首先创建n栈 依次一个一个读入char文件,将数据存入s中,在点这个分界线入栈,然后当两个数据共同入栈时可以读到运算符号,然后赋值给ab参与运算后,结果入栈,然后依托这个数据不断运算下去,最后栈顶就是答案

若是有理解错误欢迎dalao解答


by jimeikun_sunxuhao @ 2023-04-24 09:00:11

...能具体发一下题目或题目链接吗,不然都不知道题目想干什么


|