NYOJ-0305-表达式求值
来源:互联网 发布:作为打印机网络主机 编辑:程序博客网 时间:2024/06/09 23:29
表达式求值
假设表达式可以简单定义为:
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行,每一行对应一个表达式的值。
- 样例输入
3add(1,2) max(1,999) add(min(1,1000),add(100,99))
- 样例输出
3999200
NYOJ上的一道题,看了一早上,总算AC了,下面是思路:
1.可以看到,输入的表达式为函数里套函数,因此我使用了递归的方法;
2.每个函数第一个字母与函数体内第一个参数相差4(如:add(1,2) , s[0]=a , s[4]=1 ) ,因此在递归的时候,若s[i]是函数名首字 母,就可以考虑+4然后进入递归;
3.当第一个参数计算完毕时,由于函数中两个参数之间有一个 ' , ' ,因此此时需要i++ ,然后在返回之前再次i++,使i此时对应的 是第二个参数;
4.计算参数时,可以采用循环判断的方法,一旦s[i]是数字,就可以用上一个sum的值乘以10再加上s[i];
下面是代码实现部分
#include
#include using namespace std;int max( int a,int b){//cout << ">\n";return a>=b?a:b;}int min( int a,int b){//cout << "<\n";return a<=b?a:b;}int add( int a,int b){//cout << "+\n";return (a+b);}string s;int i=0;int run(){//cout << i << " " << s[i] << endl;int sum=0; //i++;while( s[i]==',' || s[i]=='(' || s[i]==')' )i++;if( s[i]=='a' ) {i+=4;//cout << "add "<='0' && i > t;while( t-- ){cin >> s;i=0;cout << run() << endl;}}//add(max(1,2),min(3,4)) 如果读者有新的思路或想法,请在下面留言讨论。
描述
Dr.Kong设计的机器人卡多掌握了加减法运算以后,最近又学会了一些简单的函数求值,比如,它知道函数min(20,23)的值是20, add(10,98)的值是 108等 等。经过训练,Dr.Kong设计的机器人卡多甚至会计算一种嵌套的更复杂的表达式。
- NYOJ-0305-表达式求值
- NYOJ 35 表达式求值
- NYOJ 35表达式求值
- NYOJ 409表达式求值
- NYOJ-35-表达式求值
- nyoj 35 表达式求值
- NYOJ 35 表达式求值
- 表达式求值 nyoj
- NYOJ 35 表达式求值
- NYOJ 35-表达式求值
- nyoj 305 表达式求值
- NYOJ,305,表达式求值
- nyoj-305-表达式求值
- nyoj 35 表达式求值
- 表达式求值(nyoj 305)
- NYOJ 35表达式求值
- NYOJ-35 表达式求值
- NYOJ--表达式求值
- 图文解说《中印对峙》
- Android 触摸事件、点击事件的区别
- java中的super()是什么
- HDU6092
- 调用sphinx的php典型代码
- NYOJ-0305-表达式求值
- 将测试环境代码推到预生产环境shell脚本
- Java中的锁分类
- 做到这一点,你也可以成为优秀的程序员
- Java简单数学运算工具类
- HDU 5730 Shell Necklace
- 【JZOJ5238】【GDOI2018模拟8.7】的士碰撞
- HDU3718ZOJ3425 Similarity(The 2010 ACM-ICPC Asia Chengdu Regional Contest,加权二分图的最优匹配)
- IndiaHacks 2nd Elimination 2017 E