输入n个元素组成的序列s,你需要找出一个乘积最大的连续子序列。如果这个最大的成绩不是正数,应输入-1(表示无解)。输入0结束输入。1<=n<=18,-10<=Si<=10。
样例输入:
3
2 4 -3
样例输出:
8
20
C语言代码:
#include <stdio.h>
#include <memory.h>
int array[1000];
int main(int argc, char ** argv){
int n;
memset(array, 0, sizeof(array));
scanf("%d", &n);
int max = -1;
for (int i = 0; i < n; i++) {
scanf("%d", &array[i]);
}
for (int i = 0; i < n; i++) {
for (int j = i+1; j < n;j++){
int temp = 1;
for (int k = i; k <= j ; k++) {
temp *= array[k];
}
if (max < temp) {
max = temp;
}
}
}
if (max > 0) {
printf("%d", max);
}else{
printf("0");
}
return 0;
}