#include <iostream>
using namespace std;
int main()
{
//freopen("in.txt", "r", stdin);
//freopen("out.txt", "w", stdout);
int n,a[20],T=0;
while(cin>>n)
{
T++;
for(int i=1;i<=n;i++)cin>>a[i];
long long max=0;
for(int i=1;i<=n;i++) //起点
{
for(int j=i;j<=n;j++) //终点
{
long long ans=1;
for(int k=i;k<=j;k++)
{
ans*=a[k];
}
if(ans>=max)max=ans;
}
}
printf("Case #%d: The maximum product is %lld.\n\n",T,max);
}
return 0;
}
一开始卡PE了,又是回车的问题
暴力方法,三重循环,一个枚举起点,一个枚举终点,第三层则是求出起点到终点的乘积,算出后跟最大值比较
注意,每个数绝对值最大值为10,最多有18个数,10^18可能超出int范围,所以用long long