全R求助,谢

P1449 后缀表达式

not_exist @ 2023-02-10 19:14:42

#include<bits/stdc++.h>
using namespace std;

int main(){
    int c=0;
    stack<int> x;
    string m;
    getline(cin,m);
    for(int i=0;i<m.length()-1;i++){
        if(m[i]>='0'&&m[i]<='9'){
            c*=10;
            c+=(m[i]-'0');
        }else if(m[i]==' '){
            x.push(c);
            c=0;
        }else{  
            int a,b;
            a=x.top();
            x.pop();
            b=x.top();
            x.pop();
            if(m[i]=='+'){
                x.push(b+a);
            }else if(m[i]=='-'){
                x.push(b-a);
            }else if(m[i]=='*'){
                x.push(b*a);
            }else{
                x.push(b/a);
            }
        }
    }
    cout<<x.top();
    return 0;
}

by ragwort @ 2023-02-10 19:39:48

@not_exist

Runtime Error.
Received signal 11: Segmentation fault with invalid memory reference.

运行时错误。

接收信号11:分割错误与无效的内存引用。

可能爆栈了?把stack移出去逝逝?


by not_exist @ 2023-02-10 20:54:54

@wind_kaka 在另一个oj一摸一样的题目就能A,这里移到全局还是R


by Orange0628 @ 2023-09-03 15:43:21

#include <bits/stdc++.h>
using namespace std;
int st[1005],top,n;
int num;
int main()
{
    string s;
    cin>>s;
    n=s.length();
    for(int i=0;i<n-1;i++)
    {
        if(s[i]>='0'&&s[i]<='9')
            num=num*10+s[i]-'0';
        if(s[i]=='.')
        {
            st[++top]=num;
            num=0;
        }
        if(s[i]=='+')
        {
            st[top-1]+=st[top];
            top--;
        }
        if(s[i]=='-')
        {
            st[top-1]-=st[top];
            top--;
        }
        if(s[i]=='*')
        {
            st[top-1]*=st[top];
            top--;
        }
        if(s[i]=='/')
        {
            st[top-1]/=st[top];
            top--;
        }
    }
    cout<<st[top];
    return 0;
}

本蒟蒻和你用的都是栈,代码借鉴一下。 那:给个关注呗 _(不强硬你^^)__


|