洛谷P1449——后缀表达式(栈模拟)
题目描述
所谓后缀表达式是指这样的一个表达式:式中不再引用括号,运算符号放在两个运算对象之后,所有计算按运算符号出现的顺序,严格地由左而右新进行(不用考虑运算符的优先级)。
如:3*(5–2)+7对应的后缀表达式为:3.5.2.-*7.+@。’@’为表达式的结束符号。‘.’为操作数的结束符号。
输入输出格式
输入格式:
输入:后缀表达式
输出格式:
输出:表达式的值
输入输出样例
3.5.2.-*7.+@
16
说明
字符串长度,1000内。
只要用STL stack就可以了
遇到数字就记下来,遇到点号就把当前数字压栈
遇到操作符就从栈顶取两个数字进行运算
1 #include<cstdio>
2 #include<algorithm>
3 #include<iostream>
4 #include<stack>
5 #include<cstring>
6 using namespace std;
7 char s[1010];
8 stack<int> st;
9 int main()
10 {
11 int tmp=0,t;
12 gets(s);
13 int len=strlen(s);
14 for (int i=0;i<len-1;i++) {
15 if (s[i]>='0' && s[i]<='9') {
16 tmp=tmp*10+s[i]-'0';
17 }
18 else {
19 if (s[i]=='.') {
20 st.push(tmp);
21 tmp=0;
22 }
23 else {
24 int x,y;
25 x=st.top(); st.pop();
26 y=st.top(); st.pop();
27 switch (s[i]) {
28 case '+' : {
29 t=y+x;
30 st.push(t);
31 break;
32 }
33 case '-' : {
34 t=y-x;
35 st.push(t);
36 break;
37 }
38 case '*' : {
39 t=y*x;
40 st.push(t);
41 break;
42 }
43 case '/' : {
44 t=y/x;
45 st.push(t);
46 break;
47 }
48 }
49 }
50 }
51 }
52 printf("%d\n",st.top());
53 return 0;
54 }
洛谷P1449——后缀表达式(栈模拟)的更多相关文章
- STL Stack(栈)学习笔记 + 洛谷 P1449 后缀表达式
稍微看了看刘汝佳的白皮书,“实用主义”的STL实在是香到我了,而且在实验室大佬的推荐下我开始了stl的学习. 每篇附带一个题目方便理解,那行,直接开始. 毕竟是实用主义,所以就按照给的题目的例子来理解 ...
- 【题解】洛谷 P1449 后缀表达式
目录 题目 思路 \(Code\) 题目 P1449 后缀表达式 思路 栈.题目说的不是很清楚,没说包含什么操作.除法用整数除法就行. 先string读入字符串,然后从前往后看如果是个数字就入栈,如果 ...
- 洛谷P1449 后缀表达式 题解 栈
题目链接:https://www.luogu.org/problem/P1449 这道题目我们只需要开一个栈,每次读取到一个数的话就将这个数 push 进栈. 因为提供给我们的时候已经是一个后续序列了 ...
- 洛谷 P1449 后缀表达式
题目描述 所谓后缀表达式是指这样的一个表达式:式中不再引用括号,运算符号放在两个运算对象之后,所有计算按运算符号出现的顺序,严格地由左而右新进行(不用考虑运算符的优先级). 如:3*(5–2)+7对应 ...
- 洛谷 P1449 后缀表达式 Label:表达式计算系列
题目描述 所谓后缀表达式是指这样的一个表达式:式中不再引用括号,运算符号放在两个运算对象之后,所有计算按运算符号出现的顺序,严格地由左而右新进行(不用考虑运算符的优先级). 如:3*(5–2)+7对应 ...
- [题解]P1449 后缀表达式(栈)
题目链接:P1449 后缀表达式 题目描述: 所谓后缀表达式是指这样的一个表达式:式中不再引用括号,运算符号放在两个运算对象之后,所有计算按运算符号出现的顺序,严格地由左而右新进行(不用考虑运算符的优 ...
- 【洛谷】P1449 后缀表达式
P1449 后缀表达式 分析: 简单的模拟题. 熟练容器stack的话很容易解决. stack,栈,有先进后出的特性. 比如你有一个箱子,你每放进第一个数时,就往箱底放,放第二个数时就在第一个数的上面 ...
- 洛谷 P1054 等价表达式
洛谷 P1054 等价表达式 题目描述 明明进了中学之后,学到了代数表达式.有一天,他碰到一个很麻烦的选择题.这个题目的题干中首先给出了一个代数表达式,然后列出了若干选项,每个选项也是一个代数表达式, ...
- 【洛谷p1981】表达式求值
题前废话: 咱也不知道咱写了个什么神奇的代码导致_rqy都看不明白它是怎么re掉的, 代码的大致思路是这样的:对于这样一个中缀表达式,先转化成它的后缀表达式的形式,然后利用P1449 后缀表达式 这道 ...
随机推荐
- thunderbird发送纯文本邮件
向邮件列表中发邮件时,要求邮件格式必须是纯文本格式的,在thunderbird中,邮件格式(plain text或者html格式)在[工具->账户设置->[账户名称]->通讯录]下的 ...
- Shell-08-文本处理sed
文本处理sed sed:流编辑器,过滤和替换文本 工作原理:sed命令将当前处理的行读入模式空间进行处理,处理完把结果输出,并且清空模式空间. 然后再将下一行读入模式空间进行处理输出,以此类推,直到最 ...
- ASP.NET Core导入导出Excel文件
ASP.NET Core导入导出Excel文件 希望在ASP.NET Core中导入导出Excel文件,在网上搜了一遍,基本都是使用EPPlus插件,EPPlus挺好用,但商用需要授权,各位码友若有好 ...
- 008 PHY(Physical Layer,PHY)
一.PHY PHY((Physical Layer,PHY))是IEEE802.3中定义的一个标准模块,STA(station management entity,管理实体,一般为MAC或CPU)通过 ...
- 高性能 C++ HTTP 客户端原理与实现
一.什么是Http Client Http协议,是全互联网共同的语言,而Http Client,可以说是我们需要从互联网世界获取数据的最基本方法,它本质上是一个URL到一个网页的转换过程.而有了基本的 ...
- 阿里云视频点播获取视频点播的video信息
背景 因为在项目中需要使用阿里云的视频点播服务,需要获取视频点播的时长信息. 工具类 生成签名串Signature SignatureUtils.java package com.meeno.wzq. ...
- 菜鸟的springboot常用注解总结
菜鸟的springboot常用注解总结 0.前言 可以毫不夸张地说,这篇文章介绍的 Spring/SpringBoot 常用注解基本已经涵盖你工作中遇到的大部分常用的场景.对于每一个注解我都说了具体用 ...
- WPF 绘图 和动画
wpf 的动画:https://www.cnblogs.com/TianFang/p/4050845.html
- 关于windows下 python3安装 cython的说明
针对python3.6希望在windows环境下安装cython,但是网上任何关于mingw的尝试都没有生效.所以只能下载 vs, 1.去官网https://visualstudio.microsof ...
- SqlServer 数据库备份到服务器,及删除
一:备份 1.在数据库管理下 新建一个维护计划,然后下图中点击 标红的按钮 新建计划作业,建好后就可以 SqlServer 代理下的作业里可以看到刚新建的作业. 2.SqlServer 代理下的作业 ...