UVA - 11059 Maximum Product (简单枚举)

来源:互联网 发布:mac电脑中病毒 编辑:程序博客网 时间:2024/06/09 00:22

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 ofS. 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 elementSi is an integer such that -10 ≤ Si ≤ 10. Next line will haveN 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., whereM is the number of the test case, starting from 1, andP is the value of the maximum product. After each test case you must print a blank line.

Sample Input

32 4 -352 5 -1 2 -1

Sample Output

Case #1: The maximum product is 8.Case #2: The maximum product is 20.


题目大意:

输入n个元素组成的序列S,你需要找出一个乘积最大的连续子序列。如果这个最大的乘积不是正数,应输出0(表示无解)。1<=n<=18,-10<=Si<=10。

解析:水题一道,直接枚举起点和终点,求最大乘积。注意要用long long


#include <stdio.h>#include <string.h>int main() {int n;int t = 0;int cas = 1;while(scanf("%d",&n) != EOF) {int num[20];for(int i = 0; i < n; i++) {scanf("%d",&num[i]);}long long sum;long long max = 0;for(int i = 0; i < n; i++) { //枚举起点for(int j = i ; j < n; j++) { //枚举终点sum = 1;for(int k = i; k <= j; k++) {sum *= num[k];}if(sum > max) {max = sum;}}}printf("Case #%d: The maximum product is %lld.\n\n",cas++,max);}return 0;}



0 0
原创粉丝点击