3 条题解
-
1
2.0完美版
#include<iostream> #include<cstdio> #include<stack> using namespace std; stack<int>num; int m,n,sum; int main(){ char ch; while(ch!='@'){ ch=getchar(); switch(ch){ case'.': num.push(sum); sum=0; break; case'+': m=num.top(); num.pop(); n=num.top(); num.pop(); num.push(n+m); break; case'-': m=num.top(); num.pop(); n=num.top(); num.pop(); num.push(n-m); break; case'*': m=num.top(); num.pop(); n=num.top(); num.pop(); num.push(n*m); break; case'/': m=num.top(); num.pop(); n=num.top(); num.pop(); num.push(n/m); break; default: sum=sum*10+(ch-'0'); break; } } cout<<num.top()<<endl; return 0; }
-
1
#include <iostream> #include <cstdio> #include <stack> using namespace std; stack <int> num; int m, n, sum; int main() { char ch; while(ch != '@') { ch = getchar(); switch(ch) { case '.': num.push(sum); sum = 0; break; case '+': m = num.top(); num.pop(); n = num.top(); num.pop(); num.push(n + m); break; case '-': m = num.top(); num.pop(); n = num.top(); num.pop(); num.push(n - m); break; case '*': m = num.top(); num.pop(); n = num.top(); num.pop(); num.push(n * m); break; case '/': m = num.top(); num.pop(); n = num.top(); num.pop(); num.push(n / m); break; default: sum = sum * 10 + (ch - '0'); break; } } cout<<num.top()<<endl; return 0; }
-
-2
后缀表达式,经典模版题。
直接上代码!
#include<iostream> #include<cstdio> #include<cstring> #include<stack> using namespace std; char s[1000]; int main(){ gets(s); int n = strlen(s), x = 0, tmp; stack <int> a; for(int i = 0; i < n-1; i++) { switch(s[i]){ case '.' : a.push(x); x = 0; break; case '+' : tmp = a.top(); a.pop(); a.top() += tmp; break; case '-' : tmp = a.top(); a.pop(); a.top() -= tmp; break; case '*' : tmp = a.top(); a.pop(); a.top() *= tmp; break; case '/' : tmp = a.top(); a.pop(); a.top() /= tmp; break; default: x = x * 10 + s[i] - '0'; } } printf("%d", a.top()); return 0; }
https://www.luogu.com.cn/record/78364318
(本人完隐,看不到记录)
- 1
信息
- ID
- 448
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 2
- 标签
- 递交数
- 18
- 已通过
- 12
- 上传者