一、题目
输入n个元素组成的序列S,你需要找出一个乘积最大的连续子序列。如果这个最大的乘积不是正数,应输出-1(表示无解)。1≤n≤18,-10≤S[i]≤10。
如:输入5(元素个数)
2 5 -1 2 -1
输出最大乘积为:20
二、源代码
#include <stdio.h>
int main(){
int n,a[20],i,j;
int temp=1,maxval=-1;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n;i++){
temp*= a[i];
for(j=i+1;j<n;j++){
temp*= a[j];
if(temp>maxval)
maxval = temp;
}
temp=1;
}
if(maxval < 0)
printf("-1\n");
else
printf("%d\n",maxval);
return 0;
}