博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷P1449后缀表达式(读题模拟,栈)
阅读量:5362 次
发布时间:2019-06-15

本文共 1183 字,大约阅读时间需要 3 分钟。

题目链接:

 

这道题的难点就在读题,把题读明白是干什么的,理解题目意思样例意思。

读懂之后就好说了,用栈即可,一个注意事项是:数可能有多位,所以要往前找,也用栈存起来好做。

1 #include 
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 using namespace std;10 typedef long long ll;11 typedef unsigned long long ull;12 const int maxn=1e6+5;13 char a[maxn];14 stack
sta;15 stack
S;16 17 int main()18 {19 ios::sync_with_stdio(false); cin.tie(0);20 21 cin>>a;22 23 int len=strlen(a);24 int lasrd=-1;25 for(int i=0;i<=len-1;i++)26 {27 if(a[i]=='.')//存数,找数字28 {29 for(int j=i-1;j>=0;j--)30 {31 if(a[j]>='0' && a[j]<='9')32 {33 S.push(a[j]);34 }35 else break;36 }37 int x=0;38 while(S.size())39 {40 int t=S.top(); S.pop();41 x=x*10+t-48;42 }43 44 sta.push(x);45 }46 else if(a[i]=='+' || a[i]=='-' || a[i]=='*' || a[i]=='/')//运算符计算47 {48 int x=sta.top(); sta.pop();49 int y=sta.top(); sta.pop();50 int h=0;51 if(a[i]=='+') h=y+x;52 else if(a[i]=='-') h=y-x;//注意是y-x,不是x-y,因为是逆序存的53 else if(a[i]=='*') h=y*x;54 else if(a[i]=='/') h=y/x;55 sta.push(h);56 }57 }58 59 cout<
<

 

完。

转载于:https://www.cnblogs.com/redblackk/p/9796422.html

你可能感兴趣的文章
zju 2744 回文字符 hdu 1544
查看>>
【luogu P2298 Mzc和男家丁的游戏】 题解
查看>>
前端笔记-bom
查看>>
上海淮海中路上苹果旗舰店门口欲砸一台IMAC电脑维权
查看>>
给mysql数据库字段值拼接前缀或后缀。 concat()函数
查看>>
迷宫问题
查看>>
【FZSZ2017暑假提高组Day9】猜数游戏(number)
查看>>
练习10-1 使用递归函数计算1到n之和(10 分
查看>>
Oracle MySQL yaSSL 不明细节缓冲区溢出漏洞2
查看>>
Code Snippet
查看>>
zoj 1232 Adventure of Super Mario
查看>>
组合数学 UVa 11538 Chess Queen
查看>>
Redis常用命令
查看>>
[转载]电脑小绝技
查看>>
thinkphp如何实现伪静态
查看>>
BZOJ 1925: [Sdoi2010]地精部落( dp )
查看>>
c++中的string常用函数用法总结!
查看>>
Week03-面向对象入门
查看>>
一个控制台程序,模拟机器人对话
查看>>
Vue 2.x + Webpack 3.x + Nodejs 多页面项目框架(上篇——纯前端多页面)
查看>>