·【蓝桥】·后缀表达式
如果从数字的正负思考该题很容易陷入无比混沌的深渊~
题目链接:·【蓝桥】·后缀表达式
题目分析
- M+N+1个数,M+N个运算符,运算符只有+号、-号,求结果最大值
当初天真认为,+运算符从较大的数到较小的开始,-运算符从小到大开始运算,即是最大值 - 但对于
4 1 -3 -4
有运算符+ + -
,按这么算是4+1+(-3)-(-4) = 6
然而4-(-3+-4)+1 = 12
,即-运算符的存在可将+运算符变为-运算符 - 发现当-运算符存在时,拆掉括号后可将运算符都变为-号(若考虑数字的正、负,容易误入瓶颈,越陷越深)
***结论:
只要存在一个-运算符,后面的运算符都不重要了!因为后面的-运算符都可变为+运算符
注意首项需要放一个数,然后才是-运算符
算法思想
- M == 0
全为+号,输入的数累加即可 - M > 0
存在至少一个-运算符,后面的运算符可全变为+运算符;- 于是有了贪心的思想:
为确保结果最大,ans先加上最大的数,再减去最小的数,剩下的取绝对值,累加(即实现将运算符可全变为+)
- 于是有了贪心的思想:
***注:
求整个序列求最大值、最小值,排序后代码量会少些
——————————————完整代码————————————————
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!