
输入n个元素组成的序列,找出乘积最大的连续子数列,若最大值不是正数则输出–1
#include <stdio.h>
int maxProduct(int arr[], int n) {
int max_product = arr[0];
int min_product = arr[0];
int result = arr[0];
for (int i = 1; i < n; i++) {
if (arr[i] < 0) {
// 交换最大值和最小值
int temp = max_product;
max_product = min_product;
min_product = temp;
}
max_product = (arr[i] > max_product * arr[i]) ? arr[i] : max_product * arr[i];
min_product = (arr[i] < min_product * arr[i]) ? arr[i] : min_product * arr[i];
result = (max_product > result) ? max_product : result;
}
return (result < 0) ? -1 : result;
}
int main() {
int n;
scanf("%d", &n);
int arr[n];
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
int max_product = maxProduct(arr, n);
printf("%d\n", max_product);
return 0;
}