题解
2024-07-30 16:34:01
发布于:浙江
#include <iostream>
#include <stack>
#include <cmath>
#include <cstdio>
using namespace std;
int main() {
string s;
int a,b,ans,y=0;
getline(cin,s);
stack <int > st;
bool flag = 0;
int p=1;
for (int i = s.size()-1; i >= 0 ; i --) {
if (s[i] >= '0' && s[i] <= '9') {
y+=(s[i]-'0')*p;
p*=10;
flag = true;
} else {
if (flag) {
st.push(y);
y=0;
p=1;
flag=false;
}
if (s[i] == '+' ||s[i] == '-' ||s[i] == '*' ||s[i] == '/' ) {
a = st.top();
st.pop();
b = st.top();
st.pop();
if (s[i] == '+') {
ans = a + b;
st.push(ans);
ans=0;
} else if (s[i] == '-') {
ans = a - b;
st.push(ans);
ans=0;
} else if (s[i] == '*') {
ans = a * b;
st.push(ans);
ans=0;
} else if (s[i] == '/') {
ans = a / b;
st.push(ans);
ans=0;
}
}
}
}
cout << st.top();
return 0;
}
这里空空如也
有帮助,赞一个