zoukankan      html  css  js  c++  java
  • 洛谷 P1449 后缀表达式

    题目描述

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

    如:3*(5–2)+7对应的后缀表达式为:3.5.2.-*7.+@。’@’为表达式的结束符号。‘.’为操作数的结束符号。

    输入格式

    输入:后缀表达式

    输出格式

    输出:表达式的值

    输入输出样例

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

    说明/提示

    字符串长度,1000内。

    分析

    将数字先存下来,遇到句号转化成数字。熬夜状态差,码风稀烂。

    #include<bits/stdc++.h>
    using namespace std;
    
    stack<int> num;
    
    int main()
    {
        string a;
        string l=""; 
        cin>>a;
        int n=a.size();
        for(int i=0;i<n;i++)
        {
            if(a[i]=='.')
            {
                int new_num=0;
                int l_size=l.size();
                for(int i=0;i<l_size;i++)
                {
                    new_num=new_num*10;
                    new_num+=l[i]-'0';//每次乘以10然后加上去 
                }
                l="";//初始化
                num.push(new_num);
            }//读完数字直接压进去 
            if(a[i]>='0'&&a[i]<='9')//如果是数字
            {
                l+=a[i];//先统计起来 
            }
            else if(a[i]=='-')
            {
                int b=num.top();
                num.pop();
                int c=num.top();
                num.pop();
                num.push(c-b);
            }
            else if(a[i]=='+')
            {
                int b=num.top();
                num.pop();
                int c=num.top();
                num.pop();
                num.push(c+b);
            }
            else if(a[i]=='*')
            {
                int b=num.top();
                num.pop();
                int c=num.top();
                num.pop();
                num.push(c*b);
            }
            else if(a[i]=='/')
            {
                int b=num.top();
                num.pop();
                int c=num.top();
                num.pop();
                num.push(c/b);
            }
        }
        cout<<num.top()<<endl;
        return 0;
    }
  • 相关阅读:
    vue 快速开发
    java 查es
    es filter 的使用
    es查询例子
    es的基本查询
    linux top命令VIRT,RES,SHR,DATA的含义
    Redis和MC的对比
    决TIME_WAIT过多造成的问题
    MariaDB yum 安装
    more 命令相关
  • 原文地址:https://www.cnblogs.com/KyleDeng/p/15578498.html
Copyright © 2011-2022 走看看