P1449 后缀表达式code
栈。题目说的不是很清楚,没说包含什么操做。除法用整数除法就行。
先string读入字符串,而后从前日后看若是是个数字就入栈,若是是运算符就从栈里弹出两个数计算再入栈。ci
#include<iostream> #include<cstring> #include<cstdio> #include<string> #include<stack> #include<algorithm> std::string sss; std::stack<int> s1; inline void read(int &T) { int x=0;bool f=0;char c=getchar(); while(c<'0'||c>'9'){if(c=='-')f=!f;c=getchar();} while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();} T=f?-x:x; } int main() { std::cin>>sss; int len=sss.length(); int sum=0; for(int i=0;i<len-1;++i) { if(sss[i]>='0'&&sss[i]<='9') { sum=sum*10+sss[i]-'0'; }else { if(sss[i]=='.') { s1.push(sum); sum=0; } else { int x1=s1.top(); s1.pop(); int x2=s1.top(); s1.pop(); if(sss[i]=='+') s1.push(x1+x2); if(sss[i]=='-') s1.push(x2-x1); if(sss[i]=='*') s1.push(x2*x1); if(sss[i]=='/') s1.push(x2/x1); } } } std::cout<<s1.top(); return 0; }