您的位置:首页 > 其它

最大乘积(Maximum Product)

2015-02-26 12:50 381 查看
Maximum Product

Time Limit:3000MSMemory Limit:Unknown64bit IO Format:%lld & %llu
Submit
Status
Description



Problem D - Maximum Product

Time Limit: 1 second

Given a sequence of integers S = {S1, S2, ..., Sn}, you should determine what is the value of the maximum positive product involving consecutive terms of
S. If you cannot find a positive sequence, you should consider
0
as the value of the maximum product.

Input

Each test case starts with 1 ≤ N ≤ 18, the number of elements in a sequence. Each element
Si is an integer such that -10 ≤ Si ≤ 10. Next line will have
N integers, representing the value of each element in the sequence. There is a blank line after each test case. The input is terminated by end of file (EOF).

Output

For each test case you must print the message: Case #M: The maximum product is P., where
M is the number of the test case, starting from 1, and
P is the value of the maximum product. After each test case you must print a blank line.

Sample Input

3
2 4 -3

5
2 5 -1 2 -1

Sample Output

Case #1: The maximum product is 8.

Case #2: The maximum product is 20.

【分析】
采用暴力枚举。连续子序列有两个要素:起点和终点,因此只需枚举起点和终点即可。

需要注意两点:1、每次测试数据结果将会有一行空行输出;2、Maximum product 结果不能用 int 来存,否则可能出现溢出。

用java语言编写程序,代码如下:

import java.io.BufferedInputStream;
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(new BufferedInputStream(System.in));
int kase = 0;
while(input.hasNext()) {
int n = input.nextInt();
int[] sq = new int
;
for(int i = 0; i < n; i++)
sq[i] = input.nextInt();

long max = 0;
for(int i = 0; i < n; i++) {
long tempMax = 1;
for(int j = i; j < n; j++) {
tempMax *= sq[j];

if(tempMax > max)
max = tempMax;
}
}

System.out.println("Case #" + (++kase) + ": The maximum product is " + max + ".\n");
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: