P1449 后缀表达式

分析:

简单的模拟题。

熟练容器stack的话很容易解决。

stack,栈,有先进后出的特性。

比如你有一个箱子,你每放进第一个数时,就往箱底放,放第二个数时就在第一个数的上面放,而这两个数取出时,先取出第二个数,才能取出第一个数。

详细请看代码

 #include<iostream>
#include<cstdio>
#include<stack> // 头文件
using namespace std; char c;
stack<int> q; // 声明 int main()
{
int n = , num;
while((c = getchar()) && c != '@'){ // 输入,以 @ 结束
// 对数字的处理,
if(c >= '' && c <= ''){
num = c - '';
if(n != ) {
num += q.top() * n; // .top() q 最后放入的数
q.pop(); // .pop() 去掉 q 最后放入的数
q.push(num); // .push(x) 往 q 放进一个数
}
else {
q.push(num);
n = ; // 处理一下数字
}
}
if(c == '.'){ // 输入一个数字完毕,归个位
n = ;
} // 判断运算符
int a, b;
if(c == '+'){
a = q.top(); q.pop();
b = q.top(); q.pop();
a += b;
q.push(a);
}
if(c == '-'){ // 注意被减数与减数
a = q.top(); q.pop();
b = q.top(); q.pop();
b -= a;
q.push(b);
}
if(c == '*'){
a = q.top(); q.pop();
b = q.top(); q.pop();
a *= b;
q.push(a);
}
if(c == '/'){ // 注意被除数与除数
a = q.top(); q.pop();
b = q.top(); q.pop();
b /= a;
q.push(b);
}
}
cout << q.top() << endl; // 输出
return ;
}

AC代码

【洛谷】P1449 后缀表达式的更多相关文章

  1. 【题解】洛谷 P1449 后缀表达式

    目录 题目 思路 \(Code\) 题目 P1449 后缀表达式 思路 栈.题目说的不是很清楚,没说包含什么操作.除法用整数除法就行. 先string读入字符串,然后从前往后看如果是个数字就入栈,如果 ...

  2. STL Stack(栈)学习笔记 + 洛谷 P1449 后缀表达式

    稍微看了看刘汝佳的白皮书,“实用主义”的STL实在是香到我了,而且在实验室大佬的推荐下我开始了stl的学习. 每篇附带一个题目方便理解,那行,直接开始. 毕竟是实用主义,所以就按照给的题目的例子来理解 ...

  3. 洛谷P1449 后缀表达式 题解 栈

    题目链接:https://www.luogu.org/problem/P1449 这道题目我们只需要开一个栈,每次读取到一个数的话就将这个数 push 进栈. 因为提供给我们的时候已经是一个后续序列了 ...

  4. 洛谷 P1449 后缀表达式 Label:表达式计算系列

    题目描述 所谓后缀表达式是指这样的一个表达式:式中不再引用括号,运算符号放在两个运算对象之后,所有计算按运算符号出现的顺序,严格地由左而右新进行(不用考虑运算符的优先级). 如:3*(5–2)+7对应 ...

  5. 洛谷 P1449 后缀表达式

    题目描述 所谓后缀表达式是指这样的一个表达式:式中不再引用括号,运算符号放在两个运算对象之后,所有计算按运算符号出现的顺序,严格地由左而右新进行(不用考虑运算符的优先级). 如:3*(5–2)+7对应 ...

  6. 洛谷P1449——后缀表达式(栈模拟)

    题目描述 所谓后缀表达式是指这样的一个表达式:式中不再引用括号,运算符号放在两个运算对象之后,所有计算按运算符号出现的顺序,严格地由左而右新进行(不用考虑运算符的优先级). 如:3*(5–2)+7对应 ...

  7. 洛谷 P1054 等价表达式

    洛谷 P1054 等价表达式 题目描述 明明进了中学之后,学到了代数表达式.有一天,他碰到一个很麻烦的选择题.这个题目的题干中首先给出了一个代数表达式,然后列出了若干选项,每个选项也是一个代数表达式, ...

  8. 【洛谷p1981】表达式求值

    题前废话: 咱也不知道咱写了个什么神奇的代码导致_rqy都看不明白它是怎么re掉的, 代码的大致思路是这样的:对于这样一个中缀表达式,先转化成它的后缀表达式的形式,然后利用P1449 后缀表达式 这道 ...

  9. [题解]P1449 后缀表达式(栈)

    题目链接:P1449 后缀表达式 题目描述: 所谓后缀表达式是指这样的一个表达式:式中不再引用括号,运算符号放在两个运算对象之后,所有计算按运算符号出现的顺序,严格地由左而右新进行(不用考虑运算符的优 ...

随机推荐

  1. HTTP专业术语,你了解多少?

    HTTP协议是什么? 超文本传输协议(HTTP)是一种为分布式.协作式的,面向应用层的超媒体信息系统.它是一种通用的.无状态(stateless)的协议,除了应用于超文本传输外,它也可以应用于如名称服 ...

  2. Spring Security Architecture and Implementation(架构和实现)学习笔记

    Spring Security 关于spring-security的官网文档学习笔记,主要是第8章 Architecture and Implementation(架构和实现)内容 参考: https ...

  3. vue+element 通过ref修改一切硬核样式~

    今天的需求是这样的,点击按钮,弹出一个Popover 弹出框 然后老大说,把弹出框往下移移,box-shadow值设的大一些... 然后就查看elenent的Popover文档,并没有方法,而且这个组 ...

  4. Java 初始化块

    初始化块是和成员变量.成员函数一个级别的.一般用于类的初始化,也可执行其他java代码,作用和构造函数相同. 创建对象时,初始化块在构造函数之前执行. 初始化块分为普通初始化块.静态初始化块. 普通初 ...

  5. 如何封装一个自己的win7系统并安装到电脑做成双系统

    说明: 目前我是刚试玩所以总结得没有很详细,先粗略放一个,下次有时间再分开整理系统封装或者如何制作双系统. 教程参考地址: 1. https://www.sysceo.com/forum/thread ...

  6. C#创建DataTable(转载)

    来源:https://www.cnblogs.com/xietianjiao/p/11213121.html方法一: DataTable tblDatas = new DataTable(" ...

  7. 申请软件著作权,wps显示代码行号功能

    申请软件著作权时,要提交代码. 格式要求,每页不少于50行,怎么设置格式,保障每页至少50行呢? 选择[页面布局]---[行号]--[每页重编行号]即可显示出来,根据显示出来的行号,调整行距等格式即可 ...

  8. C程序中的内存分布

    一个典型的C程序存储分区包含以下几类: Text段 已初始化数据段 未初始化数据段 栈 堆 进程运行时的典型内存布局 1. Text段 Text段通常也称为代码段,由可执行指令构成,是程序在目标文件或 ...

  9. HTML&CSS基础-xHtml语法规范

    HTML&CSS基础-xHtml语法规范 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.html源码 <!DOCTYPE html> <html> ...

  10. memcached——学习

    文章:memcached 常用命令及使用说明 远程清除memcached缓存 使用命令行: telnet 127.0.0.1 11211 连上memcached 然后使用命令:flush_all   ...