写出这道题的前提是知道什么后缀表达式,如果这都不知道那基本上就完蛋了。
什么是后缀表达式
后缀表达式,又称逆波兰式。将运算符写在操作数之后,比如现在有1+2,那么12+就是它的后缀表达式。
然而这道题似乎不需要知道什么是后缀表达式,应该是考虑负号将负数变成正数的问题。
定义len为整数的个数,sub为负数的个数,n为加号的数目,m为减号的数目。
1.如果没有减号,那么输出所有数之和
2.全是正数,最大值为(最大的len-1个正数之和)-(最小的正数)。
分类讨论:因为1.判断过没有减号,所以2.处必然有减号。
(1)减号为奇数个.显而易见
(2)减号为偶数个.例如5+4+3-(1-2)=5+4+3+2-1,即不管有几个减号都可以变成1个
3.负数数量大于0。
分类讨论:
(1)全是负数.等同于2.但是要取绝对值
(2)不全是负数.例如5 4 -3 -2 -1,n=2,m=2;则5+4-((-3)+(-2))-