例题7-2 最大乘积 UVa11059

1.题目描述:点击打开链接

2.解题思路:本题利用暴力搜索解决,由于n,S的范围都比较小,直接利用三重循环枚举。又最大可能乘积不会超过10^18,因此结果用long long保存。注意枚举的时候起点和终点可以重合。

3.代码:

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<algorithm>
#include<string>
#include<sstream>
#include<set>
#include<vector>
#include<stack>
#include<map>
#include<queue>
#include<deque>
#include<cstdlib>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<ctime>
#include<functional>
using namespace std;

typedef long long ll;
#define N 20
int a[N];
int n;

int main()
{
	//freopen("t.txt", "r", stdin);
	int rnd = 0;
	while (~scanf("%d", &n))
	{
		for (int i = 0; i < n; i++)
			scanf("%d", a + i);
		ll ans = 0, res;
		for (int start = 0; start < n;start++)
		for (int end = start; end < n;end++)
		{
			res = 1;
			for (int k = start; k <= end; k++)
				res *= a[k];
			ans = max(ans, res);
		}
		printf("Case #%d: The maximum product is %lld.\n\n", ++rnd,ans);
	}
	return 0;
}
时间: 2024-10-10 04:14:38

例题7-2 最大乘积 UVa11059的相关文章

7_2 最大乘积(UVa11059)&lt;枚举连续子序列&gt;

给一个数字集合{ S1,S2,…,Sn },请从这个数字集合里找出一段连续数字,使他们的乘积是最大的.以Case 1为例子,2 x 4 = 8为这个集合的最大乘积:而Case 2则为2 x 5 x(–1)x 2 x(–1)=20.如果你找到的最大乘积小于等于0,则最后答案应输出0.Input每组测试数据开头为一个正整数1≤N≤18,代表这个集合有几个数字.每个数字Si都是范围-10≤Si≤10的整数.下一列则为这个集合的N个数字.各组测试数据之间都有一个空白列.请用EOF判断档案结束.Outpu

uva11059(最大乘积) 解题心得

原题: 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 maxi

第七章部分例题最大乘积

思路:用数组存储 然后枚举起点和终点来创建子序列由于乘积很大所以要用long long 同时使用cout输出避免printf不同编译器的不同实现 1 #include <cstdio> 2 #include <algorithm> 3 #include <iostream> 4 5 using namespace std; 6 7 long long const inf=-1e18; 8 int s[20]; 9 10 int main() 11 { 12 long l

uva11059(最大乘积)

Given a sequence of integers S = fS1; S2; : : : ; Sng, you should determine what is the value of the maximum positive product involving consecutive terms of S. If you cannot nd a positive sequence, you should consider 0 as the value of the maximum pr

acm常见算法及例题

转自:http://blog.csdn.net/hengjie2009/article/details/7540135 acm常见算法及例题 初期:一.基本算法:     (1)枚举. (poj1753,poj2965)     (2)贪心(poj1328,poj2109,poj2586)     (3)递归和分治法.     (4)递推.     (5)构造法.(poj3295)     (6)模拟法.(poj1068,poj2632,poj1573,poj2993,poj2996)二.图算法

记录一些简单的暴力破解法带来的思考,基于刘佳汝的书籍例题7.1~7.5

例题7-1: 输入正整数n,按从小到大的顺序输出所有形如abcde / fghij = n 的表达式,其中a-j恰好为0-9的一个全排列(可以有前导0),2 <= n <= 79. 思考: 设M / N = n 这道题在做的时候的一个细节没有走最优化的路线导致我的算法较为卡顿,原因是没有反向思考问题.我一直想的是遍历M,再根据M求的N的组成数字,再来便利N的所有可能取值,而最优化的方式却是:便利N(N的范围较小),再根据N和n求的这种情况下的M,再把(M,N)带入一个函数检查其是否用完了0-9

到底什么是dp思想(内含大量经典例题,附带详细解析)

期末了,通过写博客的方式复习一下dp,把自己理解的dp思想通过样例全部说出来 说说我所理解的dp思想 dp一般用于解决多阶段决策问题,即每个阶段都要做一个决策,全部的决策是一个决策序列,要你求一个 最好的决策序列使得这个问题有最优解 将待求解的问题分为若干个相互联系的子问题,只在第一次遇到的时候求解,然后将这个子问题的答案保存 下来,下次又遇到的时候直接拿过来用即可 dp和分治的不同之处在于分治分解而成的子问题必须没有联系(有联系的话就包含大量重复的子问题,那 么这个问题就不适宜分治,虽然分治也

卡特兰数 性质、例题及源码实现

第一部分 性质与例题 转自:https://blog.csdn.net/wookaikaiko/article/details/81105031 一.关于卡特兰数 卡特兰数是一种经典的组合数,经常出现在各种计算中,其前几项为 : 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190, 6564

luogu 乘积最大

题目描述 今年是国际数学联盟确定的"2000――世界数学年",又恰逢我国著名数学家华罗庚先生诞辰90周年.在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好朋友XZ也有幸得以参加.活动中,主持人给所有参加活动的选手出了这样一道题目: 设有一个长度为N的数字串,要求选手使用K个乘号将它分成K+1个部分,找出一种分法,使得这K+1个部分的乘积能够为最大. 同时,为了帮助选手能够正确理解题意,主持人还举了如下的一个例子: 有一个数字串:312, 当N=3,K=1时