首页 > 其他 > 详细

最大乘积

时间:2015-12-09 11:34:01      阅读:192      评论:0      收藏:0      [点我收藏+]

输入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 }

 

最大乘积

原文:http://www.cnblogs.com/boyiliushui/p/5030833.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!