#23-【枚举】机房里的连续鸡

本文介绍了一款名为“连续鸡”的游戏,玩家需选择连续排列的鸡并计算其RP值的乘积,以找到最大的“RP鸡”。文章提供了一个枚举算法实现方案,通过两层循环来遍历所有可能的组合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值