[河南省ACM省赛-第四届] 表达式求值(nyoj 305)
栈的模拟应用:
#include<iostream> #include<cstdio> #include<cstring> #include<string> #include<cstdlib> #include<algorithm> #include<stack> using namespace std;string getPostfixExp(string s) {stack<char> sta;// d n xstring exp; int len = s.size();for(int i=0; i<len; i++){char ch = s[i]; if(ch == 'a' || ch == 'm') { //如果是字母i += 2; sta.push(s[i]);} else if(ch == '('){sta.push(ch);} else if(ch == ')'){//此时顶一定是( sta.pop();//弹走( exp += " ";exp += sta.top();sta.pop();} else if(ch != ','){ //数字 string num; while(s[i] >= '0' && s[i] <= '9'){num += s[i++];} if(exp[0] != NULL)//后缀表达式的第一个一定是数字,用此来避免首位空格 exp += " "; exp += num;i--;} }return exp; }int calculate(string post) {stack<int>sta;int len = post.size();for(int i=0; i<len; i++){int ch = post[i];if(ch >= 'a') {//如果是运算符 int a = sta.top(); sta.pop();int b = sta.top(); sta.pop();if(ch == 'd')sta.push(a+b);else if(ch == 'x')sta.push(max(a, b));else if(ch == 'n')sta.push(min(a, b)); } else if(ch != ' ') {//如果为数字 int num = 0;while(post[i] >= '0' && post[i] <= '9')num = num*10+post[i++]-'0';sta.push(num);i--;} } return sta.top(); } int main() {freopen("d:\\in.txt", "r", stdin); string s;int t;cin>>t;while(t--) {cin>>s;string post = getPostfixExp(s);cout<<calculate(post)<<endl; }return 0; }
转载于:https://www.cnblogs.com/huwtylv/p/4385306.html
[河南省ACM省赛-第四届] 表达式求值(nyoj 305)相关推荐
- [河南省ACM省赛-第三届] AMAZING AUCTION (nyoj 251)
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=251 规则: 1.若某竞标价唯一,则胜出 2.若不存在唯一竞标价,则投标次数最少竞标价中标 ...
- c语言求不定式的最大值,C语言之四则运算表达式求值(链栈)—支持浮点型数据,负数, 整型数据运算...
运算符间的优先级关系: 链栈结构体定义: 数据域使用字符串长度为20的字符数组(故需要注意判断读取的字符串是运算符还是数值) 可支持浮点型数据,负数, 整型数据的运算 float EvaluateEx ...
- 【ACM】nyoj_305_表达式求值_201308081018
表达式求值 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 Dr.Kong设计的机器人卡多掌握了加减法运算以后,最近又学会了一些简单的函数求值,比如,它知道函数min(2 ...
- NYOJ 1272:表达式求值(2016河南省ACM-A)
表达式求值 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 假设表达式定义为: 1. 一个十进制的正整数 X 是一个表达式. 2. 如果 X 和 Y 是 表达式,则 X+ ...
- 第九届河南省程序设计大赛 A 表达式求值
题目描述: 假设表达式定义为: 1. 一个十进制的正整数 X 是一个表达式. 2. 如果 X 和 Y 是 表达式,则 X+Y, X*Y 也是表达式; *优先级高于+. 3. 如果 X 和 Y 是 表达 ...
- NYOJ 35 表达式求值
表达式求值 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 ACM队的mdd想做一个计算器,但是,他要做的不仅仅是一计算一个A+B的计算器,他想实现随便输入一个表达式都能 ...
- NYOJ 35表达式求值
表达式求值 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 ACM队的mdd想做一个计算器,但是,他要做的不仅仅是一计算一个A+B的计算器,他想实现随便输入一个表达式都能求出 ...
- 经典笔试上机考题-表达式求值
相信参加过笔试面试同学应当见到过表达式求值这道题,下面列举的一道经典的考题,本文将同大家一起细细探讨一下表达式求值这一类问题的求法,希望抛砖引玉,其中有不妥的地方也请大家多多批评指正. /* 功能:四 ...
- NOIP2013普及组 T2 表达式求值
OJ地址:洛谷P1981 CODEVS 3292 正常写法是用栈 1 #include<iostream> 2 #include<algorithm> 3 #include&l ...
最新文章
- 第一次使用Android Studio时你应该知道的一切配置(三):gradle项目构建
- unity人物刚体移动_Unity 刚体移动,自方向移动
- I.MX6 Android CAN 命令行测试
- 腾讯云mysql架构_一个数据库存储架构的独白
- 6月14号=》136页-145页
- csv可以保存特殊字符_浅谈CSV注入漏洞
- 华医网自动答题小脚本软件,并收集答案保存起来
- 当电脑接双屏扩展显示器时,系统崩溃,QQ浏览器出现显示异常,通过如下方法使之正常
- 介质天线的设计原理_以水为媒介的介质天线的制作方法
- 良心安利三大游戏音效素材网站
- 原生android ui设计,在拟物和扁平之间寻找平衡 原生安卓UI设计进化史
- 【DM642】ICELL Interface—Cells as Algorithm Containers
- mipi的dsi全称_MIPI-DSI/CSI协议介绍-转载
- 华为怎么显示返回按键_你见过这台会跑的“华为手机”吗?深度体验极星Polestar 2车机系统...
- 极速办公Word文档的查找和替换功能键在哪?
- 【1044】判断是否为两位数
- 天下文章一大抄 mysql远程连接
- Java语言GUI实现计算器
- 品质网络的迭变之路,以及运营商的未来之匙
- 哈工大软件构造lab3