soul2024 @ 2023-08-25 21:42:39
#include<iostream>
#include<cmath>
#include<string>
#include<stack>
using namespace std;
int main(){
string s;
cin>>s;
double b=0;
int c,d;
stack<double>a;
for(int i=0;i<s.length();i++){
if(s[i]=='@')break;
else if(s[i]>='0'&&s[i]<='9')b=b*10+(s[i]-'0');
else if(s[i]=='.'){a.push(b),b=0;}
else if(s[i]=='+'){
c=a.top();
a.pop();
d=a.top();
a.pop();
a.push(c+d);
}
else if(s[i]=='-'){
c=a.top();
a.pop();
d=a.top();
a.pop();
a.push(abs(d-c));
}
else if(s[i]=='/'){
c=a.top();
a.pop();
d=a.top();
a.pop();
a.push(c/d);
}
else if(s[i]=='*'){
c=a.top();
a.pop();
d=a.top();
a.pop();
a.push(c*b);
}
else if(s[i]=='%'){
c=a.top();
a.pop();
d=a.top();
a.pop();
a.push(c%d);
}
}
cout<<a.top();
return 0;
}
样例没过
by xxxst @ 2023-08-25 21:51:13
这道题是不是能用树的后序遍历做(dfs),还有你的RE是什么意思
by Mark_Zhu @ 2023-08-30 20:55:44
为什么你要用double???
by Mark_Zhu @ 2023-08-30 21:21:17
#include<bits/stdc++.h>
using namespace std;
stack<int>s;
int main(){
char c;
while(cin>>c){
if(c=='@'){
cout<<s.top();
return 0;
}
if(c>='0' and c<='9'){
int x=0;
while(c!='.'){
x=x*10+c-'0';
cin>>c;
}
s.push(x);
}
if(c=='+'){
int a=s.top();
s.pop();
int b=s.top();
s.pop();
s.push(a+b);
}
if(c=='-'){
int a=s.top();
s.pop();
int b=s.top();
s.pop();
s.push(b-a);
}
if(c=='/'){
int a=s.top();
s.pop();
int b=s.top();
s.pop();
s.push(b/a);
}
if(c=='*'){
int a=s.top();
s.pop();
int b=s.top();
s.pop();
s.push(a*b);
}
}
cout<<s.top();
return 0;
}
by Mark_Zhu @ 2023-08-30 21:24:35
他的/是整除(我试过,还花费了一次下载数据),这是我的代码,希望有用。
by Mark_Zhu @ 2023-08-30 21:28:03
作为答谢,能关注一下我吗(非硬性要求)?我也关注你。