救命,吸氧过,不吸氧只过一个点

P1449 后缀表达式

由比滨丶雪乃 @ 2019-07-20 14:54:40

#include <iostream>
#include <cstdlib>
#include <cstring>
using namespace std;
int stack[101];
char s[256];

int main()
{
    cin>>s;
    int i=0,top=0,x,y;
    while(s[i]!='@') 
    {
        switch(s[i])
        {
            case'+':stack[--top]+=stack[top+1];break;
            case'-':stack[--top]-=stack[top+1];break;
            case'*':stack[--top]*=stack[top+1];break;
            case'/':stack[--top]/=stack[top+1];break;
            case'.':stack[++top]=x;x=0;;break;
            default:x=x*10+s[i]-'0';break;
        }
        i++;
    }
    cout<<stack[top]<<endl;
    return 0;   
}

by 由比滨丶雪乃 @ 2019-07-20 14:55:12

蒟蒻求助 第一个测试点本地测的没问题


by 由比滨丶雪乃 @ 2019-07-20 14:59:12

没人吗


by infinities @ 2019-07-20 16:47:07

@由比滨丶雪乃 没人


by 由比滨丶雪乃 @ 2019-07-20 16:48:36

@装弱是种美德 QAQ


by rui_er @ 2019-07-20 20:54:31

QAQ


by lenfrey @ 2019-07-20 20:56:48

为什么不借助一下万能的STL呢

#include<iostream>
#include<stack>
using namespace std;
stack<int> s;
char ch;
int a=0;
int main(){
    while(cin>>ch){
        if(ch=='@')break;
        if(ch=='.'){
            s.push(a);
            a=0;
        }
        else if(ch=='+'||ch=='-'||ch=='*'||ch=='/'){
            int y=s.top();
            s.pop();
            int x=s.top();
            s.pop();
            if(ch=='+')s.push(x+y);
            if(ch=='-')s.push(x-y);
            if(ch=='*')s.push(x*y);
            if(ch=='/')s.push(x/y);
        }
        else{
            a=a*10+ch-'0';
        } 
    }
    cout<<s.top();
    return 0;
}

by 由比滨丶雪乃 @ 2019-07-20 21:26:28

@lenfrey 思路差不多啊 可为什么必须吸氧呢- -


by lenfrey @ 2019-07-20 22:00:18

@由比滨丶雪乃 试着卡一下常?会不会是switch慢


by 由比滨丶雪乃 @ 2019-07-20 22:03:05

@lenfrey 自己本地测没问题,但lg上测就WA


by lenfrey @ 2019-07-20 22:06:36

@由比滨丶雪乃 【我也很弱,爱莫能助.jpg】


| 下一页