求助

P1449 后缀表达式

Belarus @ 2019-10-10 16:33:35

哪里出问题了QAQ

#include<bits/stdc++.h>
using namespace std;
int s[10010];
int main(){
    char c;
    int top=0,ss,x,y;
    while(c!='@'){
        c=getchar();
        if(c=='+') x=s[top],y=s[--top],s[top]=y+x;
        else if(c=='-') x=s[top],y=s[--top],s[top]=y-x;
        else if(c=='*') x=s[top],y=s[--top],s[top]=y*x;
        else if(c=='/') x=s[top],y=s[--top],s[top]=y/x;
        else if(c=='.') s[++top]=ss,ss=0;
        else ss=(ss<<3)+(ss<<1)+(c^48);
    }
    cout<<s[top];
    return 0;
}

by Belarus @ 2019-10-10 16:39:47

最诡异的是下面这组数据

3.5.2.-*7.+@

我的输出:

16

标准输出:

16

但是我WA了!!!!!


by 0nullptr @ 2019-11-08 14:30:38

@Belarus

给ss赋初值试试


by Belarus @ 2019-11-08 14:33:40

@一个python屑 竟然过了好恐怖qwq


by fzwfzwfzw @ 2019-11-08 14:34:06

#include<bits/stdc++.h>
using namespace std;
stack <int> stk;
int main(){
    char c;
    int ans=0;
    while((c=getchar())!='@')
    {
        if(c>='0'&&c<='9')
        {
            ans=ans*10+c-'0';
        }
        if(c=='.')
        {
            stk.push(ans);
            ans=0;
        }
        if(c=='-')
        {
            int a=stk.top();
            stk.pop();
            int b=stk.top();
            stk.pop();
            stk.push(b-a);
        }
        if(c=='*')
        {
            int a=stk.top();
            stk.pop();
            int b=stk.top();
            stk.pop();
            stk.push(b*a);
        }
        if(c=='+')
        {
            int a=stk.top();
            stk.pop();
            int b=stk.top();
            stk.pop();
            stk.push(b+a);
        }
        if(c=='/')
        {
            int a=stk.top();
            stk.pop();
            int b=stk.top();
            stk.pop();
            stk.push(b/a);
        }
    }
    cout<<stk.top()<<endl;
    return 0;
}

by fzwfzwfzw @ 2019-11-08 14:34:22

学会使用C++STL


by fzwfzwfzw @ 2019-11-08 14:34:46

虽然说我的码风有点奇怪


by Belarus @ 2019-11-08 14:39:51

@一念之间、、 谢谢qwq


|