由比滨丶雪乃 @ 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】