【题解】洛谷 P1449 后缀表达式
程序员文章站
2022-08-01 21:07:07
[TOC] 题目 "P1449 后缀表达式" 思路 栈。题目说的不是很清楚,没说包含什么操作。除法用整数除法就行。 先string读入字符串,然后从前往后看如果是个数字就入栈,如果是运算符就从栈里弹出两个数计算再入栈。 $Code$ cpp include include include inclu ......
目录
题目
思路
栈。题目说的不是很清楚,没说包含什么操作。除法用整数除法就行。
先string读入字符串,然后从前往后看如果是个数字就入栈,如果是运算符就从栈里弹出两个数计算再入栈。
$code$
#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; }