NYOJ305_表达式求值
来源:互联网 发布:淘宝佣金软件购买 编辑:程序博客网 时间:2024/04/19 10:05
- 描述
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 之和。
例如, 表达式 max(add(1,2),7) 的值为 7。
请你编写程序,对于给定的一组表达式,帮助 Dr.Kong 算出正确答案,以便校对卡多计算的正误。
- 输入
- 第一行: N 表示要计算的表达式个数 (1≤ N ≤ 10)
接下来有N行, 每行是一个字符串,表示待求值的表达式
(表达式中不会有多余的空格,每行不超过300个字符,表达式中出现的十进制数都不
超过1000。) - 输出
- 输出有N行,每一行对应一个表达式的值。
- 样例输入
3
add(1,2)
max(1,999)
add(min(1,1000),add(100,99))
- 样例输出
3
999
200
代码:
#include<stdio.h>#include<string.h>#include<stdlib.h>//这个表达式求值,要先算最小单元的数值,可以采用递归方式char str[350];//使用全局数据保存字符串int pos;//字符当前位置int min(int x,int y){ return x>y ? y:x;//返回比较小的数}int max(int x,int y){ return x>y ? x:y;//返回比较大的数}int fun() //函数,分析字符{ int d,n;//保存数字及数字的位数 switch(str[pos]) //分析字符串的开头字符 { case 'm': //有可能是max,min pos+=3;//指向 指向括号 if(str[pos-2]=='i') //确定是min return min(fun(),fun()); else return max(fun(),fun()); break; case 'a': //肯定是add pos+=3; return fun()+fun(); break; case ',': //分隔符 case '(': case ')': pos++;//跳过不处理 return fun();//继续递归 break; default: //数字 sscanf(str+pos,"%d%n",&d,&n);//从字符str+pos开始将数字读入v,数字位数为n,此处的%n含义是返回从调用开始到此读了多少个字节 pos+=n;//走过数字 return d; break; }}int main(){ int n,m; scanf("%d",&n);//n组测试数据 while(n--) { scanf("%s",str);//字符数据 m=fun(); printf("%d\n",m); pos=0;//每次测试完要使pos归零 } return 0;}
0 0
- NYOJ305_表达式求值
- NYOJ305_表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- java一些框架的官方下载地址
- 将一字符串的元音字母复制到另一个字符串中,并排序
- 如何让VS 自动把 Silverlight 项目生成的 xap 文件部署到指定目录
- Hadoop ssh配置设置
- CSS3 Transform——transform-origin
- NYOJ305_表达式求值
- 笨笨熊搬家问题深入--迷宫问题--深度搜索--还是填充思想并且打印出路线--递归--结构体数组---编程随笔(4)
- flex 彩虹柱子
- 部署asp.net网站时出现“未在本地计算机上注册 Microsoft.Jet.OLEDB.4.0 提供程序”
- Android Bluetooth蓝牙开发\蓝牙协议\蓝牙通信例子_Android支持蓝牙4.0版本_BLE开发
- 解决MySql Error Code: 2006 – MySQL服务器已离线错误
- HDU 2399 GPA(简单字符串的处理)
- oracle查询所有所有的表结构及字段描述等信息并plsql保存查询结果
- Leetcode Sort List