【数据结构】P1981 表达式求值】的更多相关文章

P1981 表达式求值 题目描述 给定一个只包含加法和乘法的算术表达式,请你编程计算表达式的值. 输入输出格式 输入格式: 输入文件为 expr.in. 输入仅有一行,为需要你计算的表达式,表达式中只包含数字.加法运算符“+”和乘 法运算符“*”,且没有括号,所有参与运算的数字均为 0 到 2^31-1 之间的整数.输入数据保 证这一行只有 0~ 9.+.*这 12 种字符. 输出格式: 输出文件名为 expr.out. 输出只有一行,包含一个整数,表示这个表达式的值.注意:当答案长度多于 4…
P1981 表达式求值 题解 这个题联想一下  P1310 表达式的值  思路就是输入中缀式,转成后缀式,然后按后缀式计算,完美!!       but!! 会严重RE,因为你可能会输入中缀式的时候输入非常的长,然后你还要开栈,开后缀式数组,还要转化,严重RE       What about 一边输入一边处理?? How?? 首先你一定会输入一个数字(因为这是中缀表达) 如果下一个输入运算符的话,一定要再输入一个数字,然后模拟处理一下就好了     这道题的关键就是如何一边输入一边处理   代…
题目描述 给定一个只包含加法和乘法的算术表达式,请你编程计算表达式的值. 输入格式 一行,为需要你计算的表达式,表达式中只包含数字.加法运算符“++”和乘法运算符“×”,且没有括号,所有参与运算的数字均为 0 到 2^{31}之间的整数. 输入数据保证这一行只有0−9.+.×这 1212种字符. 输出格式 一个整数,表示这个表达式的值. 注意:当答案长度多于 4 位时,请只输出最后4 位,前导0不输出. 输入输出样例 输入 #1 1+1*3+4 输出 #1 8 输入 #2 1+123456789…
https://www.luogu.org/problemnew/show/P1981 (原题链接) 显然乘法的优先级高与加法,因此碰到乘号就要优先把一连串与乘号相连的数算出,很容易想到递归.可用普通的“从头扫到尾”的方法,以加号.乘号.及字符串尾的结束符(‘\0’)为间隔读入数字(因结尾没有符号,所以别忘了若不特别处理结尾,循环过完后会不处理最后读入的数). 因数据会很大,题目善良的说“注意:当答案长度多于 4 位时,请只输出最后4 位,前导0 不输出”,有了这句话,我们的运算就只有后四位有关…
题目链接:https://www.luogu.org/problem/P1981 这道题目就是一道简化的中缀转后缀,因为这里比较简单,只有加号(+)和乘号(*),所以我们只需要开一个存放数值的栈就可以了(如果涉及加减乘除则需要开另一个用于存放符号的栈). 首先,我们读取一个整数并将其入栈. 然后接下来我们就是一个符号+一个数字这样的读取了. 每次我们读取一个符号和一个数字num: 如果符号是 + ,则判断一下当前栈中有多少元素,如果有超过1个元素,则将栈中所有元素出栈,并将它们的和入栈: 如果符…
嗯... 题目链接:https://www.luogu.org/problem/P1981 这道题其实是数组模拟栈.首先处理乘法:注意从后往前处理,处理后归零.然后把数都加起来即可. AC代码: #include<cstdio> #include<iostream> using namespace std; ]; ]; int main(){ ; ; cin >> a[cnt]; a[cnt] %= ; while(cin >> c[cnt]){ cin &…
#include <iostream> #include <cstdio> #include <cstring> using namespace std; char s[100007]; typedef long long ll; ll numSt[100007],opSt[100007],ans[63]; int main(){ while(~scanf("%s",s)){ int numTail=0,opTail=0,len=strlen(s),…
OJ地址:洛谷P1981 CODEVS 3292 正常写法是用栈 #include<iostream> #include<algorithm> #include<cmath> #include<stack> #include<cstring> #include<cstdio> using namespace std; ]; stack<long long>num;//数 stack<char>sy;//符号 v…
一.简介 迷宫求解:类似图的DFS.具体的算法思路可以参考书上的50.51页,不过书上只说了粗略的算法,实现起来还是有很多细节需要注意.大多数只是给了个抽象的名字,甚至参数类型,返回值也没说的很清楚,所以很多需要自己揣摩.这也体现了算法和程序设计语言的特点,算法更侧重本质的描述,而任何编程语言都要照顾到实现的细节以及数据类型等语法方面的需求. 表达式求值: 由于数据的读入是按照字符读入的,所以这个简单的小程序只能计算个位数的运算. 二.头文件 迷宫求解: //3_2_maze.h /** aut…
唉,刚刚用C++又又一次写了一个较完好的表达式求值程序,最后精简后程序还不到100行.这不经让我 想到了大一上学期刚学c语言时自己费了好大的劲,写了几百行并且功能还不是非常齐全(当时还不能计算有括号的表 达式)的简单计算器程序.刚把两个程序对照了一下.感触还是挺深的,同一时候也再一次体现了数据结构在程序设计 中的重要性. 曾经的那个程序有漏洞并且逻辑复杂,所以就不提了,仅仅说说如今改进后的程序,其思想主要是用到了 栈先进后出的数据结构.在该程序中建有两个栈:一个用于存储运算符,还有一个用于存储操…