前缀式计算 ACM 数据结构
来源:互联网 发布:node.js 微信 编辑:程序博客网 时间:2024/05/18 00:38
原题链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=128
原题描述:
先说明一下什么是中缀式:
如2+(3+4)*5这种我们最常见的式子就是中缀式。
而把中缀式按运算顺序加上括号就是:(2+((3+4)*5))
然后把运算符写到括号前面就是+(2 *( +(3 4) 5) )
把括号去掉就是:+ 2 * + 3 4 5
最后这个式子就是该表达式的前缀表示。
给你一个前缀表达式,请你计算出该前缀式的值。
比如:
+ 2 * + 3 4 5的值就是 37
我的解题思路:使用递归的方式进行求解,不同的情况,递归调用函数fun().当是数字的时候,先将数字存储在一个字符串中,然后再用sscnaf'将其转化成double类型的
代码:
#include <iostream>//c_str()将字符串转换成字符数组类型 #include <string.h>//对于字符串类型的数据,在求解其长度的时候,要用函数size() #include <stdio.h>//gets只能用于字符数组,而不能直接用于字符串数组,对于字符串可以直接用cin输入 //while(getline(cin,line))语句注意这里默认回车符停止读入,按Ctrl+Z或键入EOF回车即可退出循环。using namespace std;string str;int pos;double fun(){pos++;if(str[pos] == ' ') pos++;if(str[pos] >= '0' && str[pos] <= '9'){ string s; while(pos != str.size() && str[pos] != ' ') s+=str[pos++]; double tp; sscanf(s.c_str(),"%lf",&tp); return tp; }if(str[pos] == '+')return fun()+fun();if(str[pos] == '-') return fun()-fun(); if(str[pos] == '*') return fun()*fun();if(str[pos] == '/') return fun()/fun();} int main(){while(getline(cin,str)){pos=-1;printf("%.2lf\n",fun());} }
阅读全文
0 0
- 前缀式计算 ACM 数据结构
- nyoj 128前缀式计算 【数据结构&&队列】
- nyoj ACM:前缀式计算( 堆栈的使用 或 递归 )
- nyoj.128 前缀式计算【数据结构】 2014/03/12
- 前缀式计算
- NYOJ128 前缀式计算
- 前缀式计算
- 【前缀式计算 128】
- 前缀式计算
- NYOJ--前缀式计算
- 前缀式计算
- 前缀式计算
- 前缀式计算
- 前缀式计算
- nyoj-----前缀式计算
- 前缀式计算
- NY128 前缀式计算
- 前缀式计算
- 首届人单合一模式国际论坛将于9月20日在青岛召开
- 腾讯信息安全争霸赛正式开战 中美日俄等七国战队角逐冠军
- 微软认知工具Cognitive Toolkit 2.0 完整版发布!速度是对手的3倍
- 第七周 【项目5 -排队看病模拟】
- 素数环
- 前缀式计算 ACM 数据结构
- MOOC-Python网络爬虫与信息提取-第二周 BeautifulSoup库入门与信息提取方法
- leetcode 46. Permutations
- 什么是腾讯安全探索论坛(TSec)?
- 有了《网络安全法》,个人信息就更加安全了吗?
- 黄仁勋说摩尔定律已死,Nvidia要用人工智能应对
- luogu1131 [ZJOI2007][时态同步]
- 折纸问题(递归java)
- 如何快速转发CSDN博客