本文主要是介绍每日OJ_牛客_Emacs计算器(逆波兰表达式),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
牛客_Emacs计算器(逆波兰表达式)
解析代码
牛客_Emacs计算器(逆波兰表达式)
Emacs计算器__牛客网
解析代码
逆波兰表达式(后缀表达式)求值,需要借助栈,思路:
循环输入,获取逆波兰表达式,然后进行以下补助,直到测试完所有的测试用例:
- 遇到数字字符串,将该数字字符串转化为数字然后入栈。
- 遇到操作符时,从栈顶取两个数字,然后进行该运算符所对应运算,完成好将结果入栈,注意:先取到的数字为运算符的右操作数。
- 继续1和2,直到处理完所有的字符串,最终栈顶元素即为所要结果。
#include <iostream>
#include <stack>
#include <string>
using namespace std;int main()
{int n = 0;while(cin >> n){stack<int> st;string str;for(int i = 0; i < n; ++i){cin >> str;if(str == "+" || str == "-" || str == "*" || str == "/"){int right = st.top(); // 先右,再左st.pop();int left = st.top();st.pop();switch(str[0]){case '+':st.push(left + right);break;case '-':st.push(left - right);break;case '*':st.push(left * right);break;case '/':st.push(left / right);break;}}else{st.push(atoi(str.c_str()));}}cout << st.top() << endl;}return 0;
}
这篇关于每日OJ_牛客_Emacs计算器(逆波兰表达式)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!