求助!!!32分

P1449 后缀表达式

Gcy114514 @ 2023-05-27 15:46:48

只有两个点AC有一个点RE,没有TLE

#include <bits/stdc++.h>
using namespace std;
string a;
int s[11451419],k,sum=0;
int main()
{
    cin>>a;
    for(int i=0;i<a.length()-1;i++){
        if(a[i]!='+'&&a[i]!='-'&&a[i]!='*'&&a[i]!='/'&&a[i]!='.'){
            k++;
            if(a[i+1]!='+'&&a[i+1]!='-'&&a[i+1]!='*'&&a[i+1]!='/'&&a[i+1]!='.'){
                s[k]=(a[i]-'0')*10+(a[i+1]-'0');
                i++;
            }
            else
                s[k]=a[i]-'0';
        }
        else{
            if(a[i]!='.'){
                if(a[i]=='+'){
                    s[k-1]=(s[k]+s[k-1]);
                    k--;    
                }
                if(a[i]=='-'){
                    s[k-1]=(s[k-1]-s[k]);
                    k--;
                }
                if(a[i]=='*'){
                    s[k-1]=(s[k-1]*s[k]);
                    k--;
                }
                if(a[i]=='/'){
                    s[k-1]=(s[k-1]/s[k]);
                    k--;
                }
            }
        }
    }
    cout<<s[k];
    return 0;
}

by normalpcer @ 2023-07-07 10:27:13

你这个数字超过两位就不行了,像这样:

输入

100.200.+@

预期输出

300

实际输出

20

by Orange0628 @ 2023-09-03 15:59:02

代码发送^_^

#include <bits/stdc++.h>
using namespace std;
int st[1005],top,n;
int num;
int main()
{
    string s;
    cin>>s;
    n=s.length();
    for(int i=0;i<n-1;i++)
    {
        if(s[i]>='0'&&s[i]<='9')
            num=num*10+s[i]-'0';
        if(s[i]=='.')
        {
            st[++top]=num;
            num=0;
        }
        if(s[i]=='+')
        {
            st[top-1]+=st[top];
            top--;
        }
        if(s[i]=='-')
        {
            st[top-1]-=st[top];
            top--;
        }
        if(s[i]=='*')
        {
            st[top-1]*=st[top];
            top--;
        }
        if(s[i]=='/')
        {
            st[top-1]/=st[top];
            top--;
        }
    }
    cout<<st[top];
    return 0;
}

那就:

关注一下吧!

(非强硬)


|