• 洛谷 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;
    }
  • 相关阅读:
    Topcoder SRM656div1 250 ( 期望DP )
    SCAU 2015 GDCPC team_training1
    第五次群赛暨清明节专场
    HDU 2783 You’ll be Working on the Railroad(最短路)
    HDU 4013 Distinct Subtrees(树的最小表示)
    HDU 4014 Jimmy’s travel plan(图计数)
    SCAU 2015 GDCPC team_training0
    HDU 1024 Max Sum Plus Plus (递推)
    UVA 12849 Mother’s Jam Puzzle( 高斯消元 )
    HDU 4285 circuits( 插头dp , k回路 )
  • 原文地址:https://www.cnblogs.com/KyleDeng/p/15578498.html
Copyright © 2020-2023  润新知