原题其实可以归纳为一个计算不带括号的小学算术题
计算机计算数学表达式需要转化成后缀表达式——逆波兰式
#include
#include
using namespace std;
stackt;
int sol(string s) //计算后缀表达式的值
{
stackd;
for(int i=0;i
{
if(s[i]<='9'&&s[i]>='0')
d.push(s[i]-48);
else
{
int x,y;
x=d.top(),d.pop();
y=d.top(),d.pop();
if(s[i]=='+')
y+=x;
else if(s[i]=='-')
y-=x;
else if(s[i]=='x')
y*=x;
else
y/=x;
d.push(y);
}
}
return d.top();
}
int main()
{
string s,ss;
cin>>s;
for(int i=0;i
{
if(s[i]<='9'&&s[i]>='0')
ss+=s[i];
else if(s[i]=='+'||s[i]=='-')
{
while(!t.empty())
{
ss+=t.top();
t.pop();
}
t.push(s[i]);
}
else
{
t.push(s[i]);
}
}
while(!t.empty())
{
ss+=t.top();
t.pop();
}
cout<
return 0;
}