首页 > 其他分享 >第三周——后缀表达式

第三周——后缀表达式

时间:2023-04-15 14:46:03浏览次数:37  
标签:后缀 top 第三周 pop int push 表达式

题目描述

所谓后缀表达式是指这样的一个表达式:式中不再引用括号,运算符号放在两个运算对象之后,所有计算按运算符号出现的顺序,严格地由左而右新进行(不用考虑运算符的优先级)。

如:3*(5-2)+73*(5-2)+7 对应的后缀表达式为:3.5.2.-*[email protected]*7.+@。在该式中,@ 为表达式的结束符号。. 为操作数的结束符号。

输入格式

输入一行一个字符串 s,表示后缀表达式。

输出格式

输出一个整数,表示表达式的值。

输入输出样例

输入  3.5.2.-*7.+@ 输出  16

题目分析:

本题输入的是后缀表达式

后缀表达式的特点是——不用考虑运算符的优先级

遇到运算符就运算

所以,我们很容易就想到了算法——栈

算法分析:

栈特点——先进后出

本题可以使用栈来解决

遇到数字就入栈

遇到符号就出栈、并运算

再把运算后的结果入栈

 

代码:

#include<iostream>
#include<stack>
using namespace std;
int main()
{
char t;
stack<int> s;
while(cin>>t&&t!='@')//判断是否结束
{
if(t>='0'&&t<='9')
{
int temp=t-'0';//保存数字
while(cin>>t&&t>='0'&&t<='9')
temp=temp*10+t-'0';//保存数字,是否为多位数字
s.push(temp);//放入栈中
}
if(t=='+')//判断加法
{
int a=s.top();//取出第一位
s.pop();//删除第一位
int b=s.top();//b就变成了第一位
s.pop();删除
s.push(b+a);将结果放入栈中,继续计算
}
if(t=='-')
{
int a=s.top();
s.pop();
int b=s.top();
s.pop();
s.push(b-a);
}
if(t=='/')
{
int a=s.top();
s.pop();
int b=s.top();
s.pop();
s.push(b/a);
}
if(t=='*')
{
int a=s.top();
s.pop();
int b=s.top();
s.pop();
s.push(b*a);
}
}
cout<<s.top()<<endl;//输出
return 0;
}

标签:后缀,top,第三周,pop,int,push,表达式
From: https://www.cnblogs.com/gsq1/p/17321118.html

相关文章

  • python3正则-表达式
    1、介绍这里整理了表达式,即pattern参数的语法。其本质是一个str类型。2、开始和结尾(1)^^匹配字符串的开头(2)$$匹配字符串的末尾(3)整体匹配同时使用^和$3、匹配次数(1)贪婪匹配和非贪婪匹配模式贪婪匹配,在允许的范围内尽可能多的匹配表达式次数。比如*、+、{n,m}等......
  • Python 利用正则表达式和filter函数 筛选序列(列表等)
    在 Python 中,序列类型包括字符串、列表、元组、集合和字典http://c.biancheng.net/view/4312.htmlPython内建的filter()函数用于过滤序列https://www.liaoxuefeng.com/wiki/1016959663602400/1017404530360000序列内逐个元素筛选filter并用list保存结果筛选的判断条件是re.match......
  • 【学习笔记】后缀自动机 SAM
    由于本人时间原因,此处只为一个SAM的总结,讨论SAM的基本操作以及性质,详细证明如要详细学习请查询luogu题解。算法原理SAM中每一个节点代表所有结束位置(endpos)相同的串的集合。每个节点有:1.后缀链接link(到endpos包含它且maxlen最长的那个点,且是为当前点的后缀的点)2.此点所代表的......
  • 2023-4-14自增前后缀区别
    #include<bits/stdc++.h>usingnamespacestd;intmain(){ inta=39; intb=39; cout<<a<<endl<<b<<endl; a++; ++b; cout<<"oneyearlater...."<<endl; cout<<"a="<<a<<endl<<"......
  • MySQL正则表达式:REGEXP 和 LIKE
    正则表达式作用:根据指定的匹配模式匹配文中符合要求的特殊字符。REGEXP:①操作符中常用的匹配列表:②匹配特殊字符使用\\进行转义\\.  能够匹配.\\f  换页\\n换行\\r回车\\t制表\\ 纵向制表 ③进行or匹配:搜索两个串之一(或者为这个串,或者为另一个串),使用......
  • 正则表达式的匹配字串引用($1、$2...)
    上季度公司一个需求是要求优化项目接口的返回结果处理方式,原先各Controller直接调用SuperController的结果处理方法,类似这样:returncallBackSuccess(data);returncallBackSuccess(msg,data);returncallBackFilure(AppCode.XXX);//AppCode是一个返回状态码和状态码对应信息......
  • kettle从入门到精通 第十二课 kettle java代码过滤记录、利用Janino计算Java表达式
    1、下图通过简单的示例讲解了根据java代码过滤记录和利用Janino计算Java表达式两个组件。   2、根据java代码过滤记录1)步骤名称:自定义2)接收匹配的行的步骤(可选):下面条件(java表达式)执行结果为true时流转的步骤3)接收不匹配的行的步骤(可选):下面条件(java表达式)执行结果......
  • Python正则表达式
    1、re模块的介绍在Python中需要通过正则表达式对字符串进行匹配的时候,可以使用一个re模块#导入re模块importre#使用match方法进行匹配操作result=re.match(正则表达式,要匹配的字符串)#如果上一步匹配到数据的话,可以使用group方法来提取数据result.group()re.match......
  • POJ 1226 Substrings (后缀数组)
    题目地址:POJ1226将每一个字符串反转连接一次,再把所有字符串都连接起来,然后二分,找最大长度。注意与反转字符串之间不能直接相连。代码如下:#include<iostream>#include<string.h>#include<math.h>#include<queue>#include<algorithm>#include<stdlib.h>#include<ma......
  • POJ 2774 Long Long Message (后缀数组)
    题目地址:POJ2774后缀数组第一发!后缀数组真是太神奇了。。(好像每学一种新算法我都会这么说。。原理研究了好长时间,还有代码的实现,论文作者罗穗骞的代码太简洁。。好难看懂QAQ,看了好长时间。来一发后缀数组模板题,模板是用的倍增思想。代码如下:#include<iostream>#include......