这是怎么超时的。。。

P1449 后缀表达式

Estella @ 2018-10-15 22:46:21

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <stack>
using namespace std;
char s;
stack<int>p;
int main(){
    scanf("%c",&s);
    while(s!='@'){
        while(s>='0'&&s<='9'){//这样写为什么超时
            p.push(0);
            p.top()=p.top()*10+s-'0';
            scanf("%c",&s);
        }//这样写为什么超时
        if(s=='+'){
            int tmp=p.top();
            p.pop();
            p.top()+=tmp;
        }
        if(s=='-'){
            int tmp=p.top();
            p.pop();
            p.top()-=tmp;
        }
        if(s=='*'){
            int tmp=p.top();
            p.pop();
            p.top()*=tmp;
        }
        if(s=='/'){
            int tmp=p.top();
            p.pop();
            p.top()/=tmp;
        }
        scanf("%c",&s);
    }
    printf("%d",p.top());
    return 0;
}

by Estella @ 2018-10-15 23:03:18

好吧,懂了

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <stack>
using namespace std;
char s;
stack<int>p;
int main(){
    scanf("%c",&s);
    while(s!='@'){
        if(s>='0'&&s<='9'){
            p.push(0);
            while(s>='0'&&s<='9'){
               p.top()=p.top()*10+s-'0';
               scanf("%c",&s);
            }
        }
        if(s=='+'){
            int tmp=p.top();
            p.pop();
            p.top()+=tmp;
        }
        if(s=='-'){
            int tmp=p.top();
            p.pop();
            p.top()-=tmp;
        }
        if(s=='*'){
            int tmp=p.top();
            p.pop();
            p.top()*=tmp;
        }
        if(s=='/'){
            int tmp=p.top();
            p.pop();
            p.top()/=tmp;
        }
        scanf("%c",&s);
    }
    printf("%d",p.top());
    return 0;
}

|