题意:
确定一个 l , r l,r l,r ,使 ∏ i = l r s i \prod_{i=l}^r s_i ∏i=lrsi 最大。
思路
我们可以枚举每一个左节点和右节点,求这段区间的和,最后取 max \max max 即可。
注意:
a n s ans ans 初始化为 1 1 1。
输入到 E O F EOF EOF 为止。
代码
#include<bits/stdc++.h>
using namespace std;
int n,tot;
long long ans,a[20];
int main(){
while(scanf("%d",&n)!=EOF){
ans=0; //初始化
tot++;
for(int i=1;i<=n;i++)
scanf("%lld",&a[i]);
for(int i=1;i<=n;i++) //左节点
for(int j=i;j<=n;j++){ //右节点
long long sum=1;
for(int k=i;k<=j;k++)
sum*=a[k]; //求积
ans=max(ans,sum); //ans与sum取max
}
printf("Case #%d: The maximum product is %lld.\n\n",tot,ans); //输出
}
return 0;
}