ALDS1_3_A:Stack
Posted 叶卡捷琳堡
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ALDS1_3_A:Stack相关的知识,希望对你有一定的参考价值。
一、题目
逆波兰数
二、题解(C++)
思路:程序从算式开头逐一读取字符串,如果字符是操作数,则压入栈,如果是运算符,则从栈中取出两个数值算出结果再压入栈,如此循环。最终栈中剩下的数值便是答案
#include<iostream>
#include<stack>
#include<string>
using namespace std;
int main()
{
//用于保存数的栈
stack<int> s;
string number;
cin >> number;
for (int i = 0; i < number.length(); i++)
{
if (number[i] == '+')
{
int temp1 = s.top();
s.pop();
int temp2 = s.top();
s.pop();
int result = temp1 + temp2;
s.push(result);
}
else if (number[i] == '-')
{
int temp1 = s.top();
s.pop();
int temp2 = s.top();
s.pop();
int result = temp2 - temp1;
s.push(result);
}
else if (number[i] == '*')
{
int temp1 = s.top();
s.pop();
int temp2 = s.top();
s.pop();
int result = temp1 * temp2;
s.push(result);
}
else if (number[i] == '/')
{
int temp1 = s.top();
s.pop();
int temp2 = s.top();
s.pop();
int result = temp2 / temp1;
s.push(result);
}
else
{
//将数字压入栈中
s.push(number[i] - '0');
}
}
cout << "result = " << s.top() << endl;
}
运行结果
以上是关于ALDS1_3_A:Stack的主要内容,如果未能解决你的问题,请参考以下文章
[Aizu] ALDS1_14_B: String Search[续]
Aizu - ALDS1_1_CPrime Numbers(素数筛法)
[Aizu] ALDS1_13_A: 8 Queens Problem
c_cpp http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ALDS1_3_B&lang=jp