Given a sequence of integers
S
=
f
S
1
;S
2
;:::;S
n
g
, 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 product.
Input
Each test case starts with 1
N
18, the number of elements in a sequence. Each element
S
i
is
an integer such that
这道题只需要枚举起点到终点的连续序列就行。但是有个坑点:当m初始化为-11时,m<=0时要输出0,千万不能把=号忽略了(m代表输出的结果);只不过有一个解决办法,就是m初始化的时候直接m=0.
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <sstream>
#include <cmath>
#include <queue>
using namespace std;
const int maxn = 100005;
int a[maxn];
int main()
{
int n,kase = 1;
while(cin>>n){
long long t = 1,m = -11;
memset(a,0,sizeof(a));
for(int i = 0;i < n;i++)
cin>>a[i];
for(int i = 0;i < n;i++){
for(int j = i;j < n;j++){
for(int k = i;k <= j;k++){
t *= a[k];
}
//cout<<"t: "<<t<<endl;
if(t > m) m = t;
t = 1;
}
}
cout<<"Case #"<<kase++<<": The maximum product is ";
if(m <= 0) cout<<0<<"."<<endl;
else
cout<<m<<"."<<endl;
cout<<endl;
}
return 0;
}