今日题目:后缀表达式 (洛谷)
题目难度:⭐️⭐️
题目涉及算法:栈,字符串,模拟。
ps:有能力的小伙伴可以尝试优化自己的代码或者一题多解,这样能综合提升自己的算法能力
解题思路:
我用数组模拟栈的方法来解决了这道问题,一旦读取的不是数字就把这个数字压入栈,读到运算符就把栈顶上两个数做运算,然后弹出栈顶两个元素,再将结果压入栈顶即可。
#include<bits/stdc++.h> using namespace std; int a[1000]; int i,sum; int main() { char s; while((s = getchar())!='@') { if(s>='0'&&s<='9') { sum*=10; sum+=s-'0'; } else if(s=='.') { a[++i]=sum; sum = 0; } else if(s=='+') { a[i-1] = a[i-1] + a[i]; a[i]=0; i--; } else if(s=='-') { a[i-1] = a[i-1] - a[i]; a[i]=0; i--; } else if(s=='*') { a[i-1] = a[i-1] * a[i]; a[i]=0; i--; } else if(s=='/') { a[i-1] = a[i-1] / a[i]; a[i]=0; i--; } } cout<<a[1]; return 0; }
每日一题,有效内卷!