#include <stdio.h>
int main() {
int function(int arr[], int len);
int arr[] = {2,3,-1,4,0,8,2};
int len = sizeof(arr) / sizeof(arr[0]);
printf("连续子数组最大乘积: %d\n", function(arr,len));
return 0;
}
int function(int arr[], int len) {
if (len == 0) {
return 0;
}
int max = arr[0]; //当前最大值
int min = arr[0]; //当前最小值
int result = arr[0]; //全局最大值
for (int i = 1; i < len; i++) {
// 更新当前最大和最小值
max = (arr[i] > max * arr[i]) ? arr[i] : max * arr[i];
min = (arr[i] < min * arr[i]) ? arr[i] : min * arr[i];
// 更新全局最大值
result = (max > result) ? max : result;
}
return result;
}
01-18
675
08-17
1580
06-15
1116
06-25
1609