博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
表达式求值
阅读量:6197 次
发布时间:2019-06-21

本文共 1403 字,大约阅读时间需要 4 分钟。

http://acm.zznu.edu.cn/problem.php?id=1632

表达式求值

时间限制: 1 Sec  内存限制: 128 MB
提交: 12  解决: 11
[ ][ ]

题目描述

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 算出正确答案,以便校对卡多计算的正误。

 

输入

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

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

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

超过1000。)

 

输出

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

 

样例输入

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

样例输出

3999200

提示

 

来源

 

//这个表达式求值,要先算最小单元的数值,可以采用递归方式

CODE:

 

#include<stdio.h>

#include<iostream>

using namespace std;

int start;

char str[1010];

int minn(int a, int b)

{
       return a < b ? a : b;
}

int maxn(int a, int b)

{
       return a > b ? a : b;
}

int fun()

{
     int v, n; 
    switch(str[start])
    {
         case 'a': start+=3;return fun() + fun();
         case 'm':
                start += 3;
                 if(str[start-2] == 'i')
                          return minn(fun(), fun());
                else return maxn(fun(), fun());

         case '(':

         case ',':
         case ')': start++;return fun();
         default :
             sscanf(str+start, "%d%n", &v, &n);
             start += n;
             return v;
            break;
    }
}

int main()

{
            int n;

           cin >> n;

           getchar();

          while(n--)

         {
               start = 0;
               gets(str);
               printf("%d\n", fun());

         }

        return 0;
}

 

转载于:https://www.cnblogs.com/Tinamei/p/4475643.html

你可能感兴趣的文章
Linq表达式、Lambda表达式你更喜欢哪个?
查看>>
Java学习——变量类型
查看>>
作为一名职高生学习Linux的心酸经历
查看>>
json数组的序列化和反序列化json数组的序列化和反序列化
查看>>
openjudge6047分蛋糕[DP]
查看>>
C#通过WebClient/HttpWebRequest实现http的post/get方法
查看>>
android:clipToPadding和android:clipChildren
查看>>
iOS学习笔记(4) — UITableView的 重用机制
查看>>
进制转换
查看>>
支付宝接口错误:您使用的私钥格式错误,请检查RSA私钥配置,charset = utf-8
查看>>
『HTML5挑战经典』是英雄就下100层-开源讲座(二)危险!英雄
查看>>
字符串替换
查看>>
android项目 之 记事本(13) ----- 查看图片及播放录音
查看>>
娱乐一下:汤姆君的大转盘算法(搞笑版)
查看>>
dubbo的泛化调用研究
查看>>
The client and server cannot communicate, because they do not possess a common algorithm
查看>>
使用C语言实现一个虚拟机
查看>>
未找到与命令“dotnet-ef”匹配的可执行文件
查看>>
pdf ppt word office转图片 教学白板
查看>>
MyGeneration学习笔记(6) :在Web Service中使用dOOdad(下)
查看>>