package suanfajingsai;
import java.util.Scanner;
/*
* 输入n个元素组成的序列S,找出一个乘积最大的连续子序列。如果这个最大的乘积不是正数,输出0(表示无解)。
* 1<=n<=18,-10<=Si<=10。
案例:
Sample Input
3
2 4 -3
5
2 5 -1 2 -1
Sample Output
8
20
*/
public class Uva11059 {
public static long find(int a[]) {
long max = 0;
for (int i = 0; i < a.length; i++) {
long max2 = 1;//乘积最大值
for(int j=i;j<a.length;j++){
max2=max2*a[j];
if(max2>max){
max=max2;
}
}
}
if(max<0){
max=0;
}
return max;
}
public static void main(String[] args) {
int n;
Scanner scanner = new Scanner(System.in);
n = scanner.nextInt();
int a[] = new int[18];
for (int i = 0; i < n; i++) {
a[i] = scanner.nextInt();
}
System.out.println(find(a));
}
}
找出一个乘积最大的连续子序列
最新推荐文章于 2024-07-04 16:20:40 发布