题解 | #最大乘积#
最大乘积
https://www.nowcoder.com/practice/5f29c72b1ae14d92b9c3fa03a037ac5f
#include <stdio.h> #include<malloc.h> /* 最大值只有两种情况 最大的三个正数的乘积 最小的两个负数*最大的正数的乘积 */ int main() { int n, i; scanf("%d", &n); long min1 = 1, min2 = 1; long max1 = 1, max2 = 1, max3 = 1; long value, max_product = -1; for (i = 0; i < n; i++) { scanf("%ld", &value); if (value > max1) { max3 = max2; max2 = max1; max1 = value; } else if (value > max2) { max3 = max2; max2 = value; } else if (value > max3)max3 = value; else if (value < min1) { min2 = min1; min1 = value; } else if (value < min2)min2 = value; } if (max2 + max3 > -min1 - min2)max_product = max1 * max2 * max3; else max_product = min1 * min2 * max1; printf("%ld\n", max_product); return 0; }