题目大意:给你$N$个整数,让你从中选$r$个数($0<r \leq N$),使得它们的乘积最大。输出任意一组解
思路:(大佬勿喷)
1 我们知道几个正整数的乘积总是正数,所以遇到正整数直接输出就好啦
2 遇到负数就不同了,我们知道“奇负偶正”,于是就有两种情况:
1 如果有偶数个负数,因为“偶正”,所以全部输出
2 如果有奇数个负数,我们只能输出个数-1个负数,并且这些负数的绝对值最大
3 接下来还需要三个特判
特判1:如果$N=1$并且这个数小于等于0,输出这个数
特判2:如果$N$($N>1$)个整数全是0,输出0
特判3:如果$N$($N>1$)个整数中全是非正数(只有0和负数),如果只有1个负数并且0的个数不为0,输出0(因为0比负数大)
4 然后。。。你就AC了
code
1 |
|