欢迎光临散文网 会员登陆 & 注册

P1449 后缀表达式

2023-03-12 18:33 作者:仓鼠翞  | 我要投稿

//后缀表达式求值
//https://www.luogu.com.cn/problem/P1449?contestId=96630
//错误点一:其中运算的每一个值不一定都是一位数,可能会有多位数的情况
#include<bits/stdc++.h>
using namespace std;

string str;
stack<long long > mystack;
long long now=0;

int main()
{
   cin>>str;
   for(string::iterator it=str.begin();it!=str.end();it++)
   {
       //扫到是数字则压入栈内
       //扫到是操作符则出栈两次运算后压入栈内
       //需要将字符的数字转化为int型的数字
       if(*it=='@')
       {
           cout<<mystack.top();
           break;
       }
       if(*it=='.')
       {
           if(now!=0)
           {
               mystack.push(now);
               now=0;
           }
           continue;
       }
       if(isalnum(*it))
       {
          //可能操作数不是一位的需要判断
          now=now*10;
          now+=*it-'0';
          continue;
       }
       if(!isalnum(*it))
       {
           //不是数字
           if(*it=='+')
           {
               //是加的操作
               long long right=mystack.top();//出栈右操作数
               mystack.pop();
               long long  left=mystack.top();//出栈左操作数
               mystack.pop();
               long long  mid=right+left;
               mystack.push(mid);
           }
           if(*it=='-')
           {
               long long right=mystack.top();
               mystack.pop();
               long long left=mystack.top();
               mystack.pop();
               long long mid=left-right;
               mystack.push(mid);
           }
           if(*it=='*')
           {
               long long right=mystack.top();
               mystack.pop();
               long long left=mystack.top();
               mystack.pop();
               long long mid=left*right;
               mystack.push(mid);
           }
           if(*it=='/')
           {
               long long right=mystack.top();
               mystack.pop();
               long long left=mystack.top();
               mystack.pop();
               long long mid=left/right;
               mystack.push(mid);
           }
       }
   }
}

P1449 后缀表达式的评论 (共 条)

分享到微博请遵守国家法律