题目链接:
这道题的难点就在读题,把题读明白是干什么的,理解题目意思样例意思。
读懂之后就好说了,用栈即可,一个注意事项是:数可能有多位,所以要往前找,也用栈存起来好做。
1 #include2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 using namespace std;10 typedef long long ll;11 typedef unsigned long long ull;12 const int maxn=1e6+5;13 char a[maxn];14 stack sta;15 stack S;16 17 int main()18 {19 ios::sync_with_stdio(false); cin.tie(0);20 21 cin>>a;22 23 int len=strlen(a);24 int lasrd=-1;25 for(int i=0;i<=len-1;i++)26 {27 if(a[i]=='.')//存数,找数字28 {29 for(int j=i-1;j>=0;j--)30 {31 if(a[j]>='0' && a[j]<='9')32 {33 S.push(a[j]);34 }35 else break;36 }37 int x=0;38 while(S.size())39 {40 int t=S.top(); S.pop();41 x=x*10+t-48;42 }43 44 sta.push(x);45 }46 else if(a[i]=='+' || a[i]=='-' || a[i]=='*' || a[i]=='/')//运算符计算47 {48 int x=sta.top(); sta.pop();49 int y=sta.top(); sta.pop();50 int h=0;51 if(a[i]=='+') h=y+x;52 else if(a[i]=='-') h=y-x;//注意是y-x,不是x-y,因为是逆序存的53 else if(a[i]=='*') h=y*x;54 else if(a[i]=='/') h=y/x;55 sta.push(h);56 }57 }58 59 cout< <
完。