UVA

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.



#include <bits/stdc++.h>
using namespace std;

int num[20];

long long int get_multi(int l, int r)
{
    long long int res = 1;
    for(int i = l; i <= r; i++)
        res *= num[i];
    return res;
}

int main()
{
#ifndef ONLINE_JUDGE
    freopen("in.txt","r",stdin);
    freopen("out.txt","w",stdout);
#endif

    int n, kase = 0;
    while(memset(num, 0, sizeof(num)), scanf("%d", &n)!=EOF)
    {
        long long int maxnum = INT_MIN;
        for(int i = 1; i <= n; i++)
            scanf("%d", &num[i]);
        for(int i = 1; i <= n; i++)
            for(int j = i; j <= n; j++){
                maxnum = max(maxnum, get_multi(i, j));
            }
        printf("Case #%d: The maximum product is %lld.

", ++kase, maxnum <= 0 ? 0 : maxnum);
    }
    return 0;
}


原文地址:https://www.cnblogs.com/kunsoft/p/5312773.html