0%

C++ 基礎題 後序式求值

關於 stack 的應用 ( 經典題 )

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include<bits/stdc++.h>

using namespace std;

int main(){
string c;
while(getline(cin,c)){
stack<int> st;
for(int i=0;i<c.size();i++){
if(isdigit(c[i])){
st.push(c[i]-'0');
}else{
int a=st.top();
st.pop();
int b=st.top();
st.pop();
if(c[i]=='+'){
st.push(b+a);
}else if(c[i]=='-'){
st.push(b-a);
}else if(c[i]=='*'){
st.push(b*a);
}else if(c[i]=='/'){
st.push(b/a);
}else if(c[i]=='%'){
st.push(b%a);
}
}
}
cout<<st.top()<<"\n";
}
return 0;
}