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的主要内容,如果未能解决你的问题,请参考以下文章

Stack,( Aizu - ALDS1_3_A)

[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

Aizu - ALDS1_4_C Dictionary