找出一个乘积最大的连续子序列

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));

	}
}

猜你喜欢

转载自blog.csdn.net/qq_37387363/article/details/79269584