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; }