最大乘积

输入n个元素组成的序列S,找出一个乘积最大的连续子序列,如果这个最大的乘积不是正数,输出-1

输入样例:

3
2 4 -3

输出样例:
8

输入样例:

3
2 0 1

输出样例:

 -1

 

 1 #include <iostream>  
 2 using namespace std; 
 3 
 4 int main()
 5 {
 6    int count=0,n,i,j,k=0,max;
 7    cin>>n;
 8    max = n*(n-1)/2;
 9    int a[n+1];
10    long long s[max+1];
11 
12    for(i = 0;i < n;i++)
13    {
14         cin>>a[i];
15    }
16    
17    for(i = 0;i < n-1;i++)
18    {
19            for(j = i+1;j < n;j++)
20            {
21               s[count] = a[i];
22            for(k = i+1;k < j+1;k++)
23            {
24                    s[count] = a[k]*s[count];
25            }
26            count++;
27         }
28    }
29    for(i = 0;i < max-1;i++)
30    {
31            for(j = i+1;j < max;j++)
32            {
33                long long t;
34             if(s[i] < s[j])
35             {
36                 t = s[j];
37                 s[j] = s[i];
38                 s[i] = t;
39             }    
40         }
41    }
42    
43    if(s[0] <= 0)
44            printf("-1");
45    else
46         printf("%d",s[0]);
47    return 0;  
48 }

 

posted on 2015-12-09 10:36  LeoSanford  阅读(484)  评论(0编辑  收藏  举报

levels of contents