ACM寻找连续的数的乘积最大值

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.

解题思路:这个题目的大意是让我们寻找连续的数的乘积的最大值。我们用两个for循环就解决掉了这两个问题,然后比较得出最大的乘积数。

程序代码:

#include <iostream>
using namespace std;
int a[22];
int main()
{
    int n,v=0;
    long t;
    while(cin>>n&&n)
    {
        v++;
        long min=0;
        for(int i=0;i<n;i++)
            cin>>a[i];
        for(int k=0;k<n;k++)
        {
            t=1;
            for(int j=k;j<n;j++)
            {
                t=t*a[j];
                if(t>min)
                    min=t;
            }
        }
        cout<<"Case #"<<v<<": The maximum product is "<<min<<"."<<endl<<endl;

    }
    return 0;

}
时间: 2024-11-09 23:16:02

ACM寻找连续的数的乘积最大值的相关文章

lintcode 中等题:find the missing number 寻找缺失的数

题目 寻找缺失的数 给出一个包含 0 .. N 中 N 个数的序列,找出0 .. N 中没有出现在序列中的那个数. 样例 N = 4 且序列为 [0, 1, 3] 时,缺失的数为2. 注意 可以改变序列中数的位置. 挑战 在数组上原地完成,使用O(1)的额外空间和O(N)的时间. 解题 重新定义一个数组存放排序后的数,空间复杂度和时间复杂度都是O(N) public class Solution { /** * @param nums: an array of integers * @retur

寻找回文数的python的实现

寻找回文数 寻找回文数也是一个比较好玩的题目,也是学习python的一个简单的filter()函数的应用 解决方法:即按照回文数的特点进行即可. 方法一:一行代码解决 #coding=UTF-8 #寻找回文数 def is_palindrome(n): s=str(n) return s[0:len(s)//2]==s[-1:len(s)//2:-1] #return str(n)==str(n)[::-1] #测试 for i in filter(is_palindrome,range(100

寻找最大的数

#include<iostream>#include<string.h>using namespace std;char c[100],ans[100];int main(){    int len;    cin>>len;    while(len--)    {        cin>>c;        int m;        cin>>m; int len=strlen(c);        int beg=0;        //

hdu1754(线段数维护区间最大值)

题意:给定1-n(n<=200000)个数,然后动态改变一些值,并动态询问区间最大值. 解法:裸的线段树,赛前默写模版回忆下线段树代码.仍然要注意:线段树节点数组一定要开到节点数的三倍长度. 代码: /****************************************************** * author:xiefubao *******************************************************/ #pragma comment(lin

三数中找最大值

static void Main11三数中找最大值(string[] args) { //1.输入三个数,找出最大的输出 Console.WriteLine("请输入第一个数"); int a = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("请输入第二个数"); int b = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("

[2013百度软件研发笔试题] 求字符串中连续出现同样字符的最大值

题目完整描写叙述为:用递归的方式实现一个求字符串中连续出现同样字符的最大值.如aaabbcc,连续出现a的最大值为3,abbc,连续出现字符最大的值为2. 下面是我想出来的方法: #include <iostream> using namespace std; #define MAX(a, b) (a) > (b) ? (a) : (b) int Get(char *s, int n, int m)  //字符指针, 当前最长串, max最长串 {     if(*(s+1) == '\

[2013百度软件研发笔试题] 求字符串中连续出现相同字符的最大值

题目完整描述为:用递归的方式实现一个求字符串中连续出现相同字符的最大值,如aaabbcc,连续出现a的最大值为3,abbc,连续出现字符最大的值为2. 以下是我想出来的方法: #include <iostream> using namespace std; #define MAX(a, b) (a) > (b) ? (a) : (b) int Get(char *s, int n, int m)  //字符指针, 当前最长串, max最长串 {     if(*(s+1) == '\0'

【华为OJ】【084-求最大连续bit数】

[华为OJ][算法总篇章] [华为OJ][084-求最大连续bit数] [工程下载] 题目描述 功能: 求一个byte数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1 输入: 一个byte型的数字 输出: 无 返回: 对应的二进制数字中1的最大连续数 输入描述 输入一个byte数字 输出描述 输出转成二进制之后连续1的个数 输入例子 3 输出例子 2 算法实现 import java.util.Scanner; /** * Author: 王俊超 * Dat

Jsの数组练习-求一组数中的最大值和最小值,以及所在位置

要求:求一组数中的最大值和最小值,以及所在位置 代码实现: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv=&