我是靠谱客的博主 紧张白猫,最近开发中收集的这篇文章主要介绍栈(裸题)Stack    Aizu - ALDS1_3_A ,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Stack    Aizu - ALDS1_3_A

Write a program which reads an expression in the Reverse Polish notation and prints the computational result.

An expression in the Reverse Polish notation is calculated using a stack. To evaluate the expression, the program should read symbols in order. If the symbol is an operand, the corresponding value should be pushed into the stack. On the other hand, if the symbols is an operator, the program should pop two elements from the stack, perform the corresponding operations, then push the result in to the stack. The program should repeat this operations.

Input

An expression is given in a line. Two consequtive symbols (operand or operator) are separated by a space character.

You can assume that +, - and * are given as the operator and an operand is a positive integer less than 106

Output

Print the computational result in a line.

Constraints

2 ≤ the number of operands in the expression ≤ 100
1 ≤ the number of operators in the expression ≤ 99
-1 × 109 ≤ values in the stack ≤ 109

Sample Input 1

1 2 +

Sample Output 1

3

Sample Input 2

1 2 + 3 4 - *

Sample Output 2

-3

Notes

Template in C


本题就是一个裸的栈问题,计算后缀表答式,具体后追表达式是什么就不清楚的讲了,网上很多,只要知道从右往左一次遍历,遇到一个符号就取出他的前两个数来计算,因为还存在括号这种情况所以会使用到栈。而我的代码则是用数组模拟栈,老实说我觉得STL的栈真的很慢。

简单题不多说,直接上代码:

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std;

const int maxn = 100 + 5;

int top = 0;
int S[1000];

void push(int key){
  S[++top] = key;
  return;
}

int pop(){
  top--;
  return S[top+1];
}

int main(){
  int a,b;
  top = 0;
  char s[maxn];
  while(scanf("%s",s) != EOF){
    if(s[0] == '+'){
      a = pop();
      b = pop();
      push(a+b);
    }
    else if(s[0] == '-'){
      b = pop();
      a = pop();
      push(a-b);
    }
    else if(s[0] == '*'){
      a = pop();
      b = pop();
      push(a*b);
    }
    else{
      push(atoi(s));
    }
  }
  printf("%dn",pop());
}

这里的atio()是将字符转成数字的函数。

最后

以上就是紧张白猫为你收集整理的栈(裸题)Stack    Aizu - ALDS1_3_A 的全部内容,希望文章能够帮你解决栈(裸题)Stack    Aizu - ALDS1_3_A 所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部