首页 > 其他 > 详细

学习笔记

时间:2019-08-28 12:54:42      阅读:106      评论:0      收藏:0      [点我收藏+]

时日不多了,好好珍惜OI的时光。

### 逆波兰表达式 

实质上就是中缀的后序遍历,把运算的优先给简化了,就是读到运算符的话就把栈顶的两个数出栈进行操作就好了,之后把结果再压进栈中。

比如3*(5–2)+7 就是 3 5 2 - * 7 +;4 + 2 * 5 - 7 / 11 就是 4 2 5 * + 7 -;

我们发现他的特性就是数字的顺序未变,变的只是符号的位置。而这种表达式的运算就是找到最近的运算符进行操作。所以说它是没有优先级的。

练习:luogu1449

那怎么转呢?

实际上还是利用栈。是数字的话就输出,是左括号的话就压进来,是右括号就弹出栈顶直到右括号。普通运算符就是如果栈顶优先级比当前大,那就输出,否则就压进去。最后栈中还有其他元素就弹出输出。

其实逆波兰表达式就是给表达式求值用的,计算器就是用的这个算法。

先把中缀转成逆波兰,再求值就ok了。快又稳。

练习:luogu 1981、1175;hdu 1237 

学习笔记

原文:https://www.cnblogs.com/Simples2004/p/11423069.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!