问题:
输入n个元素组成的序列S,你需要找出一个乘积最大的连续子序列。
如果这个最大的乘积不是正数,应该输出-1(表示无解)。
(可以输入小数,输出保留两位小数)
输入: 3
2 4 -3
输出: 8.00
输入: 5
2 5 -1 2 -1
输出: 20.00
解:
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
double[][] a = new double[n][n];
double max = -99999;
for (int i = 0; i < n; i++) {
a[i][0] = in.nextDouble();
if (max < a[i][0])
max = a[i][0];
}
int m = n;
for (int i = 0; i < n; i++) {
int p = 0;
int q = i + 1;
for (int j = 1; j < m; j++) {
a[i][j] = a[i][p] * a[q][0];
if (max < a[i][j])
max = a[i][j];
p++;
q++;
}
m--;
}
if (max < 0) {
System.out.println("-1");
} else {
System.out.printf("%.2f", max);
}
}
}