【枚举】机房里的连续鸡

Description

机房里,LSH和大家一起玩一款游戏:连续鸡。这款游戏里,有n只鸡排成一列,每只鸡都有一个RP值。游戏者可以选择任意只连续的鸡,将它们身上的RP乘起来,称为“RP鸡”。游戏者也可以一只也不选,其“RP鸡”为1。所有游戏者中,找到的“RP鸡”最大的人获胜。由于LSH的运算能力十分厉害,大家都玩不过他。因此,YPN找到了你,要你编一个程序,帮助他找到最大的“RP鸡”。

Input

一共有2行。

第一行为1个整数n,代表鸡的个数。

第二行为n个整数。

Output

共1行。第一行为最大的RP鸡的值。注意,鸡从0开始编号。


Sample Input

51 2 -3 -4 -5

Sample Output

24

HINT

【数据范围与提示】

1 ≤ n ≤ 18

-10 ≤ 每只鸡的RP ≤ 10

代码:

#include <iostream>

#define SIZE 21

using namespace std;

int a[SIZE] = {1};

int main(int argc, char** argv)
{
	int n, i, j, k;
	long long res = 1, t;
	
	scanf("%d", &n);
	for (i = 1; i <= n; i++)
	{
		scanf("%d", a + i);
		for (j = 1; j <= i; j++) // 枚举一段的开始
		{
			t = 1;
			for (k = j; k <= i; k++) // 乘
			{
				t *= a[k];
			}
			res = max(res, t);
		}
	} 
	
	printf("%lld", res);
	
	return 0;
}

猜你喜欢

转载自blog.csdn.net/drtlstf/article/details/80766175
今日推荐