输入n个元素组成的序列S,你需要找出一个乘积最大的连续子序列。如果这个最大的乘积不是正数,应输出-1(表示无解)。n>=1 n<=18 Si>=-10 Si<=10。
样列输入:
3
2 4 -3
5
2 5 -1 2 -1
样列输出:
8
20
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int main() {
int a[100];
int num;
while (cin >> num) {
for (int i = 0; i < num; ++i) {
cin >> a[i];
}
sort(a, a + num);
int size[100];
memset(size, 0, sizeof(size));
for (int i = 0; i < num; ++i) {
int temp = a[num - 1];
for (int k = num - 2; k >= i; --k) {
temp *= a[k];
}
size[i] = temp;
}
sort(size, size + num);
if (size[num - 1] < 0)
cout << "-1\n";
else
cout << size[num-1];
}
return 0;
}