最大乘积
输入n个元素组成的序列s,你需要找出一个乘积最大的连续子序列。如果这个最大的成绩不是正数,应输入-1(表示无解)。输入0结束输入。1<=n<=18,-10<=Si<=10。
样例输入:
3
2 4 -3
5
2 5 -1 2 -1
样例输出:
8
20
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int N = 18+5;
int data[N];
int n;
void solve()
{
long long sum=1;
for(int i=0; i < n; i++)
{
long long temp =sum * data[i];
if(temp>sum)
sum = temp;
}
if(sum > 0)
cout << sum << endl;
else
cout << -1 << endl;
}
int main()
{
// freopen("in.txt","r",stdin);
while(cin>>n)
{
for(int i=0; i < n; i++)
cin >> data[i];
solve();
}
return 0;
}