求指教 为什么错,样例数据正确

P1449 后缀表达式

sandm__ @ 2020-08-14 14:51:25

求指教,不知有什么错

#include<bits/stdc++.h>
using namespace std;
int z[1010]; 
int main()
{
    char s[1010];
    cin>>s;
    int i,top=0;
    int t=strlen(s); 
    for(i=0;i<=t;i++)
    {
        if(s[i]=='@')break;
        if(s[i]=='.')continue;
        if(s[i]>='0'&&s[i]<='9')
        {
            top++;
            z[top]=s[i]-48;
            continue;
         }
        switch(s[i])
        {
            case '-':z[--top]=z[top]-z[top+1];break;
            case '*':z[--top]=z[top]*z[top+1];break;
            case '/':z[--top]=z[top]/z[top+1];break;
            case '+':z[--top]=z[top]+z[top+1];break;
        }
    }
    cout<<z[top];
    return 0;
}

by konjacq @ 2020-08-14 14:53:14

@lixiang314 没保证输入都是一位数吧


by sandm__ @ 2020-08-14 15:29:31

@konjacq 对啊 谢谢大佬orzorz


by sandm__ @ 2020-08-14 15:40:06

@konjacq 不过改了之后还是wa


by konjacq @ 2020-08-14 15:41:10

@lixiang314 代码发一下,我没交这道题看不到


by sandm__ @ 2020-08-14 15:56:21

@konjacq 您看

#include<bits/stdc++.h>
using namespace std;
int z[1010]; 
int main()
{
    char s[1010];
    cin>>s;
    int i,top=0,w=0;
    int t=strlen(s); 
    for(i=0;i<=t;i++)
    {
        if(s[i]=='@')break;
        if(s[i]=='.')
        {
            w=0;
            continue;
        }
        if(s[i]>='0'&&s[i]<='9')
        {
            w++;
            if(w==1)
            {
                top++;
                z[top]=s[i]-48;
            }
            else
            {
                z[top]*=10;
                z[top]+=s[i]-48;
             }
            continue;
         }
        switch(s[i])
        {
            case '-':z[--top]=z[top]-z[top+1];break;
            case '*':z[--top]=z[top]*z[top+1];break;
            case '/':z[--top]=z[top]/z[top+1];break;
            case '+':z[--top]=z[top]+z[top+1];break;
        }
    }
    cout<<z[top];
    return 0;
}

by konjacq @ 2020-08-14 15:59:12

z[--top]=z[top]-z[top+1];

建议把这里弄一下吧,不清楚是先--还是先+1,可能UB了(当然很有可能其实不是这里的问题


by konjacq @ 2020-08-14 16:00:44

另外感觉你这个top的维护也怪怪的,感觉维护一个临时变量,在读到.的时候再压进栈里会比较合理.


by sandm__ @ 2020-08-15 10:38:42

@konjacq 好的谢谢您


|