c/c++语言开发共享【题解】洛谷 P1449 后缀表达式

[TOC] 题目 “P1449 后缀表达式” 思路 栈。题目说的不是很清楚,没说包含什么操作。除法用整数除法就行。 先string读入字符串,然后从前往后看如果是个数字就入栈,如果是运算符就从栈里弹出两个数计算再入栈。 $Code$ cpp include include include inclu …

目录

  • $code$


题目

p1449 后缀表达式

思路

栈。题目说的不是很清楚,没说包含什么操作。除法用整数除法就行。
先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; }

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/601570.html

(0)
上一篇 2021年5月10日
下一篇 2021年5月10日

精彩推荐