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;
}
本蒟蒻和你用的都是栈,代码借鉴一下。
那:给个关注呗 _(不强硬你^^)__