1449 后缀表达式
good
练习栈的表达式,给定一个后缀表达式,求值,好理解,但不好实现
先自己玩玩
首先,是一个人都得知道如何求后缀表达式的值,从前往后一个一个扫描,碰到表达式就取出栈顶求值再放进去
这个题也行,不过就是存值的时候比较麻烦
枚举几个状态就行了
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<string>
#include<cstring>
using namespace std;
int num,tot;
long long s[1000];
int main()
{
char op;
while((op=getchar())!='@')//循环输入
{
if(op>='0'&&op<='9') num*=10,num+=op-48;
else if(op=='.')
{
s[++tot]=num;//存栈,并且清零
num=0;
}
else if(op=='+')
{
s[tot-1]=s[tot-1]+s[tot];
s[tot]=0;//取栈顶两个元素相加
tot--;
}
else if(op=='-')
{
s[tot-1]=s[tot-1]-s[tot];
s[tot]=0;//取栈顶两个元素相减
tot--;
}
else if(op=='*')
{
s[tot-1]=s[tot-1]*s[tot];
s[tot]=0;
tot--;
}
else if(op=='/')
{
s[tot-1]=s[tot-1]/s[tot];
s[tot]=0;
tot--;
}
}
cout<<s[1]<<endl;
return 0;
}