Description

Dr.Kong设计的机器人卡多掌握了加减法运算以后,最近又学会了一些简单的函数求值,比如,它知道函数min(20,23)的值是20 ,add(10,98) 的值是108等等。经过训练,Dr.Kong设计的机器人卡多甚至会计算一种嵌套的更复杂的表达式。

假设表达式可以简单定义为:

1. 一个正的十进制数 x 是一个表达式。

2. 如果 x 和 y 是 表达式,则 函数min(x,y )也是表达式,其值为x,y 中的最小数。

3. 如果 x 和 y 是 表达式,则 函数max(x,y )也是表达式,其值为x,y 中的最大数。

4.如果 x 和 y 是 表达式,则 函数add(x,y )也是表达式,其值为x,y 之和。

例如, 表达式 add(max(add(1,2),7) 的值为 7。

请你编写程序,对于给定的一组表达式,帮助 Dr.Kong 算出正确答案,以便校对卡多计算的正误。

Input

第一行: N,表示要计算的表达式个数 (1≤ N ≤ 10)

接下来有N行,每行是一个字符串,表示待求值的表达式

(表达式中不会有多余的空格,每行不超过300个字符,表达式中出现的十进制数都不超过1000。)

Output

输出有N行,每一行对应一个表达式的值。

Sample input

3
add(1,2)
max(1,999)
add(min(1,1000),add(100,99))

Sample output

3
999
200

#include<string>
#include<cstring>
#include<iostream>
#include<sstream>
#include<stack>
#include<algorithm>
using namespace std;
int main()
{
    stack<int> n,op;  //max-1 min-2 add-3
    int t,i,len,p;
    ];
    cin>>t;
    while(t--)
    {
        scanf("%s",a);
        len=strlen(a);
        ;i<len;i++)
        {
            if(a[i]>='a'&&a[i]<='z')
            {

                ]=='a')
                op.push();
                ]=='i')
                op.push();
                ]=='d')
                op.push();
                i+=;
            }
            ')
            {
                p=;
                &&a[i]-)
                {
                    p=p*+a[i]-';
                    i++;
                }
                n.push(p);
                i--;
            }
            else if(a[i]==')')
            {
                int x,y;
                x=n.top();n.pop();
                y=n.top();n.pop();
                )
                n.push(max(x,y));
                )
                n.push(min(x,y));
                )
                n.push(x+y);

                op.pop();
            }
        }
        cout<<n.top()<<endl;
    }
    ;
}

【TOJ 4309】表达式求值(模拟栈)的更多相关文章

  1. 【NYOJ-35】表达式求值——简单栈练习

    表达式求值 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 Dr.Kong设计的机器人卡多掌握了加减法运算以后,最近又学会了一些简单的函数求值,比如,它知道函数min ...

  2. 表达式求值(栈方法/C++语言描述)(二)

    上篇中完成了对表达式求值的整体过程,接下来看看如何处理不同类型的token. 对运算数的处理比较简单,它直接调用函数strtod(),将字符串中的运算数转换为浮点类型并将它压入运算数栈中: void ...

  3. Matrix Chain Multiplication(表达式求值用栈操作)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1082 Matrix Chain Multiplication Time Limit: 2000/100 ...

  4. C语言之四则运算表达式求值(链栈)—支持浮点型数据,负数, 整型数据运算

     运算符间的优先级关系: 链栈结构体定义: 数据域使用字符串长度为20的字符数组(故需要注意判断读取的字符串是运算符还是数值) 可支持浮点型数据,负数, 整型数据的运算 float EvaluateE ...

  5. 河南省acm第九届省赛--《表达式求值》--栈和后缀表达式的变形--手速题

    表达式求值 时间限制:1000 ms | 内存限制:65535 KB 难度:3   描述 假设表达式定义为:1. 一个十进制的正整数 X 是一个表达式.2. 如果 X 和 Y 是 表达式,则 X+Y, ...

  6. 表达式求值(栈方法/C++语言描述)(一)

    一个算数表达式(以下简称为表达式)由运算数.运算符.左括号和右括号组成,定义一个枚举类型TokenType表示为: typedef enum { BEGIN, NUMBER, OPERATOR, LE ...

  7. TOJ1302: 简单计算器 && TOJ 4873: 表达式求值&&TOJ3231: 表达式求值

    这些都是应用Python的eval函数的一些题目! TOJ1302传送门:http://acm.tzc.edu.cn/acmhome/problemdetail.do?&method=show ...

  8. 洛谷P1981 表达式求值 题解 栈/中缀转后缀

    题目链接:https://www.luogu.org/problem/P1981 这道题目就是一道简化的中缀转后缀,因为这里比较简单,只有加号(+)和乘号(*),所以我们只需要开一个存放数值的栈就可以 ...

  9. 表达式求值(栈方法/C++语言描述)(三)

    代码清单 // calculator.h #ifndef CALCULATOR_H #define CALCULATOR_H #include <stack> #include <s ...

  10. 双栈算术表达式求值算法 栈(Stack) - Java实现

    https://mp.weixin.qq.com/s/dg8mgd6CIQ7Tui1_fQwSBA https://github.com/toywei/DataStructure/tree/maste ...

随机推荐

  1. less自动编译 VScode 开发工具配置

    1.首先在vscode商店下载EasyLess插件,安装 2.在VS Code项目中,有一个.vscode的文件夹,找里面的settings.json文件(或者在文件-首选项-设置-搜索setting ...

  2. 常见ie6的浏览器兼容bug

    1.文字本身的大小不兼容 同样是font-size:14px的宋体文字,在不同浏览器下占的空间是不一样的, ie下实际占高16px,下留白3px ff 下实际占高17px,上留白1px,下留白3px ...

  3. sheepdog

  4. ASP.NET MVC Tips

    1. _ViewStart.cshtml会在调用每个页面的时候执行,我们可以在页面内设置Layout页面,也可以在这个页面写一些逻辑来根据不同的情况引用不同的Layout页面,详情请参考此处:

  5. ArcGIS Enterprise 10.5.1 静默安装部署记录(Centos 7.2 minimal)- 5、安装Datastore

    安装Datastore 解压datastore安装包,tar -xzvf ArcGIS_DataStore_Linux_1051_156441.tar.gz 切换到arcgis账户静默安装server ...

  6. elasticsearch5.5.2环境搭建

    运行elasticsearch5.5.2需要jdk1.8版本以上 1.elasticsearch可以去官网或github下载,window系统推荐zip压缩版 2.解压后 进入bin目录运行elast ...

  7. shell定时采集数据到HDFS

    上线的网站每天都会产生日志数据.假如有这样的需求:要求在凌晨 24 点开始操作前一天产生的日志文件,准实时上传至 HDFS 集群上. 该如何实现?实现后能否实现周期性上传需求?如何定时? Linux ...

  8. 【Hibernate那点事儿】—— Hibernate应该了解的知识

    前言: 最近由于有点时间,就像深入的学习一下Hibernate.之前只是简单的使用,并没领会它的妙处.这里就趁着分享的机会,好好整理一下. 这篇主要讲到了下面几个部分: Hibernate框架 Hib ...

  9. appendChild与Transition动画

    在createElement之后,直接把这个div append到body中,是不会触发css3 transition动画的 必须要让浏览器计算div的css属性后,然后再设置div的style,才会 ...

  10. 【转载】#458 Errors While Converting Between enum and Underlying Type

    You can convert to an enum value from its underlying type by casting the underlying type (e.g. int) ...