【洛谷】P1449 后缀表达式
2024-10-19 17:30:04
分析:
简单的模拟题。
熟练容器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代码
最新文章
- 第二十六篇:两个SOUI新控件 ---- SListView和SComboView(借用Andorid的设计)
- thinkphp3.2.3在框架截取文字
- Unix 用gdb分析core dump文件
- pomelo获取客户端IP
- Yii的学习(3)--查询生成器 (Query Builder)
- IntelliJ IDEA 14注册码
- 轮播图切换 纯html+js+css
- 用于防SQL注入的几个函数
- JavaScript-4.6鼠标事件监听,获取鼠标坐标window.event---ShinePans
- Android_模拟时钟内时针、分针触摸转动
- location的使用
- POJ [P3020] Antenna Placement
- (办公)面试java设计模式
- Codeforces 348D Turtles LGV
- java开发mis系统所需技术及其作用
- Drools 语法
- 关于rawurldecode PHP自动解码
- DZ拿shell总结
- [oracle] update语句卡住问题
- 主机屋MySQL数据库链接