最大乘积
输入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 }