1. 程式人生 > >最大乘積連續子序列

最大乘積連續子序列

題目描述

輸入n個元素組成的序列S,你需要找出一個乘積最大的連續子序列,如果這個最大乘積不是正數,則輸出0。

輸入

第一行輸入n(1<=n<=9)表示序列的長度,第二行輸入n個整數表示序列的元素(-10<=元素<=10)以空格分隔,最後一個數字之後無空格)。

輸出

輸出結果(結果之後無空格)。

樣例輸入

32 4 -3

樣例輸出

8

分析:

連續子序列有兩個要素:起點和終點,因此只需要列舉起點和終點即可。

#include<iostream>
using namespace std;
int main()
{
    int num[10];
    int n,max,sum;
    int i,j;
    cin>>n;
    for(i=0;i<n;i++)
        cin>>num[i];
    max=num[0]*num[1];
    for(i=0;i<n-1;i++){
        sum=num[i];
        for(j=i+1;j<n;j++){
            sum=sum*num[j];
            max<=sum?max=sum:max;
        }
    }
    if(max>=0)
        cout<<max<<endl;
    else
        cout<<"0"<<endl;
    return 0;
}