首页 > 其他分享 >逆波兰式->题解

逆波兰式->题解

时间:2024-11-29 22:10:31浏览次数:3  
标签:int 题解 s1 元素 后缀 波兰 include 表达式

前文

看到这种表达式的题目,第一时间就想到了栈,
尤其是这种

关于后缀表达式的题目.

理论

用栈来模拟后缀表达式是非常便捷的.

对于后缀表达式,当遇到数字时,将数字压入栈中,如果是运算

符号,就将栈顶的两个元素弹出,根据符号进行运算,再把值放

回栈中.

代码

\(tips1:\)由于题目中的空格在求值时有点麻烦,可以先将空格删除,

再进行求值.

\(tips2:\)在进行运算时,尤其是减法时,应该用第二个取出来的元素

减去第一个,即栈顶元素.因为第二个元素是前面求完的值,而栈顶

元素是新加进来的.

\(tips3:\)取模时,注意保证结果为正数.

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stack>

using namespace std;

stack<int> st; // 存数字 
string s1, s;

int main() {
	getline(cin, s1); // 原式 
	for (int i = 0; i < s1.size(); i++)
		if (s1[i] != ' ') s += s1[i]; // 去空格 
	for (int i = 0; i < s.size(); i++) {
		if (s[i] >= '0' && s[i] <= '9')
			st.push((s[i] - '0') % 10); // 一位数字 取模 
		else { // 遇到符号 
			int num1 = st.top();st.pop(); // 先取栈顶的两位数字 
			int num2 = st.top();st.pop();
			int res = 0;
			switch (s[i]) { // 根据符号来决定值 
				case '+': res = num2 + num1;break;
				case '-': res = num2 - num1;break;
				case '*': res = num2 * num1;break;
			}
			// 取模时注意保证符号是正的 
			st.push((res + 10) % 10);
		}
	}
	// 最终结果也要取模 
	printf("%d", st.top() % 10);
	return 0;
}

标签:int,题解,s1,元素,后缀,波兰,include,表达式
From: https://www.cnblogs.com/panda-lyl/p/18577669

相关文章

  • CF2037G - Natlan Exploring 题解
    又来到我们最喜欢的数论环节了。题面纳特兰地区由\(n\)座城市组成,每座城市的吸引力值为\(a_i\)。从城市\(i\)到城市\(j\)之间存在一条有向边,当且仅当\(i<j\)和\(\gcd(a_i,a_j)\neq1\),其中\(\gcd(x,y)\)表示整数\(x\)和\(y\)的最大公约数(GCD)。从城市......
  • P11337 「COI 2019」IZLET 题解
    先考虑构建树的形态,显然可以将所有边按边权从小到大排序,构造最小生成树。注意到相邻的两个点之间的颜色数只可能是\(1\)或\(2\),所以只考虑边权\(\le2\)的就好了。接下来考虑怎么染色。考虑从一个点开始dfs,每次确定当前遍历到的点的颜色,考察当前点到父亲的边权:等于\(1\)......
  • [ABC355F] MST Query 题解
    原题链接link题目大意给你一棵\(n\)个点的带边权的树,有\(q\)次询问,每次询问加一条带边权的边,输出当前的最小生成树的边权和。思路这道题我们观察题目范围,可知权值的范围很小。所以我们考虑枚举权值,计录这种权值的边对答案的变化\(dp_i\)。对于一条边,我们用并查集记录这......
  • 装配线调度题解
    装配线调度题解初始化:F[1][1]=e1+a1,1F[2][1]=e2+a2,1对于第i个装配站(3<=i<=n),我们可以考虑两种情况:在第1条装配线上完成第i个装配站的最短总时间:F[1][i]=min(F[1][i-1]+a1,i,F[2][i-1]+a1,i+t2,i-1)在第2条装配线上完成第i个装配站的最短总时间:F[2][......
  • [CSP-S 2024] 染色 题解
    题目链接[CSP-S2024]染色题解这是一道线性\(dp\)问题,难点在于在具体的题目背景中抽象出实际问题,最难的地方是分类讨论。根据题目的意思,如果第\(i\)位数字(\(a_{i}\))的颜色和第\(i\)位之前的数字(\(a_{[1,i]}\))的颜色都不同,则这个数字贡献为\(0\),接着,如果前面有相同的颜......
  • CF1479E School Clubs 题解
    感觉这种题都比较套路。思路我们考虑定义势能函数\(\Phi(x)\),满足:对于一个随机过程,\(E(\Phi(A_{x+1})-\Phi(A_{x})|A_x,\cdots,A_0)=-1\)。\(\Phi(A_t)\)为定值,并且\(\Phi(A_t)=\Phi(A_i)\)当且仅当\(i=t\)。此时,\(\Phi(x)+x\)为离散时间鞅。根据停时定理,\(E(\Phi(A......
  • NOIP 模拟赛 #20 - D 题解
    D一个\(n\timesm\)的网格图,一开始所有格子颜色都是\(0\)。有\(k\)次染色操作,每次把第\(l\simr\)行或第\(l\simr\)列中的格子全都染成颜色\(c\)。在所有染色操作完成后,设$c_{i,j}为格子\((i,j)\)的颜色,求\(\sum\limits_{i=1}^n\sum\limits_{j=1}^m(......
  • 2024-0xGame-WEB方向全题解
    0xGameRound1ez_rce源码:fromflaskimportFlask,requestimportsubprocessapp=Flask(__name__)@app.route("/")defindex():returnopen(__file__).read()@app.route("/calc",methods=['POST'])defcalculator():ex......
  • 问题解决方法(一)-寻找亮点
    在1990年,杰里斯特宁被国际儿童慈善组织派往越南去解决当地儿童营养不良的问题,时间只有6个月。他到当地后发现根本没钱、没人、没资源。但如果是你,这个时候会怎么办?我想大多数人会选择写个报告,说明要先发展经济,再发展教育,提高父母的素质,问题自然就解决了。这个报告是正确的,然而并没......
  • 网页web无插件播放器EasyPlayer.js无插件H5播放器关于绿屏和花屏的问题解决方案
    EasyPlayer.jsH5播放器,是一款能够同时支持HTTP、HTTP-FLV、HLS(m3u8)、WS、WEBRTC、FMP4视频直播与视频点播等多种协议,支持H.264、H.265、AAC、G711A、Mp3等多种音视频编码格式,支持MSE、WASM、WebCodec等多种解码方式,支持Windows、Linux、Android、iOS全平台终端的H5播放器,使用简单......