输入n,以及n个元素的S,求乘积最大的连续子序列,如果不是正数则输出-1
样例:
3
2 4 -3
5
2 5 -1 2 -1
样例输出
8
20
+++++++++++++++++++++++++
我写的比较粗糙,有几个问题没有注意:不能连续输出,数据小,不严格输出了头尾指针
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(){
int mul = -10000, temp, i, k, j, front, rear;
int n;
int a[20];
scanf("%d", &n);
for( i = 1; i <= n; i++){
scanf("%d", &a[i]);
}
for( i = 1; i < n; i++){
for( k = n; k > i; k--){
temp = 1;
for( j = i; j <= k; j++){
temp *= a[j];
}
if( temp > mul){
mul = temp;
front = i;
rear = j - 1;
}
}
}
if( mul <= 0){
printf("-1");
}
else{
printf("%d %d %d", mul, front, rear);
}
return 0;
}