10.13做题——洛谷1449后缀表达式

摘要:
Pid=1449标题描述中所谓的后缀表达式是指这样一种表达式,其中括号不再被引用,操作符号被放置在两个操作对象之后,并且所有计算都严格按照操作符号出现的顺序从左到右执行。例如,对应于3*(5–2)+7的后缀表达式是3.5.2.-*7.+@。解决思路:使用堆栈模拟后缀表达式,即先读入两个数字,然后按顺序计算。注:1谁说只有一个数字?

本题地址: http://www.luogu.org/problem/show?pid=1449

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

输入输出样例
输入样例#1:
3.5.2.-*7.+@
输出样例#1:
16

说明
字符串长度,1000内。

解题思路:
用栈模拟后缀表达式即可
即先读入两个数,再计算
按顺序即可
注意:
1谁说数只有一位?
2里面会有’.’,’。’这类无用的符号

#include<iostream>
#include<stack>
//STL STACK 好用,虽然速度慢了点
using namespace std;
stack<int> a;
int main()
{
     cin.sync.with_stdio(false);//理论可加快读入时间,但用洛谷测时间还长些···
    int top,top1;
    char c;
    while(1)
    {
        cin>>c;//先读入,后加减的后缀表达式思想
        if(c=='@')
            break;
        if(c>='0'&&c<='9')
        {
            a.push((c-'0'));
            while(1)//这里处理不止一位的情况
            {
                cin>>c;
                if(!(c>='0'&&c<='9'))
                    break;
                top=a.top();
                a.pop();
                a.push(top*10+c-'0');
            }
        }
        if(c=='+')//加减乘除处理
        {
            top=a.top();
            a.pop();
            top1=a.top();
            a.pop();
            a.push(top+top1);
        }
        else
            if(c=='-')
            {
                top=a.top();
                a.pop();
                top1=a.top();
                a.pop();
                a.push(top1-top);
            }
            else
                if(c=='*')
                {
                    top=a.top();
                    a.pop();
                    top1=a.top();
                    a.pop();
                    a.push(top*top1);
                }
                else
                    if(c=='/')
                    {
                        top=a.top();
                        a.pop();
                        top1=a.top();
                        a.pop();
                        a.push(top1/top);
                    }
    }
    cout<<a.top();
    return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

免责声明:文章转载自《10.13做题——洛谷1449后缀表达式》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇sicily 1144. 陶陶摘苹果Pytorch 分割模型构建和训练【直播】2019 年县域农业大脑AI挑战赛---(四)模型构建和网络训练下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

CSS制作凹环特效

就是在地面上打凿出凹的圆环效果,利用linear-gradient线性渐变增强内环质感,再用伪类after元素设置中心圆凸块的位置以及大小与跟内环之间的阴影度,然后设置内环的颜色就行了;第四个环上面的第二小凸块也同样适用伪类after元素然后设置z-index的顺序。在linear-gradient段内可以见到各种浏览器支持提示,Firefox Chrom...

使用jQuery对图片进行居中设置

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> body { height...

获取和设置元素的top和left值

第一种方法,比较简单,就是直接通过obj.style.left和obj.style.top,但是有局限性,这种获取的方法只能获取到行内样式的left和top的属性值,不能获取到style标签和link 外部引用的left和top属性值。 第二种方法 只读,可以获取所有style样式,存在兼容性问题,在标准浏览器中可以通过window.getComputed...

使用top命令、dump文件定位问题

使用top命令、dump文件定位问题 1.背景 定位java应用出问题的代码块 2.一个demo 一个springboot创建的demo import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.Rest...

(转贴)来谈谈SQL数据库中"简单的"SELECT TOP—可能有你从未注意到的细节

首先从博客园的Jerome Wong网友说起 他提出了一个这样的问题 本人写了好几年SQL语句了,从来没注意到这件事情。 例如: 数据表如下: ID  EMPNO  NAME  AGE   1   26929   Jerome   282   28394   Quince  273   20983   Green   304   27189   Mike ...

linux top命令查看内存及多核CPU的使用讲述

查看多核CPU命令 mpstat -P ALL  和  sar -P ALL 说明:sar -P ALL > aaa.txt   重定向输出内容到文件 aaa.txt top命令 经常用来监控linux的系统状况,比如cpu、内存的使用,程序员基本都知道这个命令,但比较奇怪的是能用好它的人却很少,例如top监控视图中内存数值的含义就有不少的曲解。本文...