欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

最大乘积问题

程序员文章站 2022-05-07 12:08:30
...

题目描述
输入n个元素组成的序列s,找出一个乘积最大的连续子序列,输出最大乘积的值。如果这个最大乘积不是正数,输出0。n小于18,每个元素值的绝对值不大于10。

输入
先输入n的值,再依次输入n个数的序列,遇到文件末尾结束。

输出
在一行输出最大乘积的值。

样例输入
5
2 5 -1 2 -1
样例输出
20

    当看到这道题的时候,我想的是先判断有几个负数,如果偶数个负数,则直接遍历乘到最后,奇数个则乘到奇数个数减一个,但是又一想,不对,可以是乘一个负数后面的,也可以是乘一个负数前面的,也可以是中间的。
后来,看到这个代码,我就恍然大悟了,从数组第一个数遍历循环,然后再从这个数开始遍历循环。

参考代码

#include<stdio.h>
int main()
{
int n,cj=1,i,j,max=-1;
int a[100];
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<n;i++)
{
cj=1;
for(j=i;j<n;j++)
{
cj=cj*a[j];
if(cj>max) max=cj;
}
}
if(max<0) printf(“0”);
else printf("%d",max);
return 0;
}
————————————————
版权声明:本文为CSDN博主「chenmoan」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_41961380/article/details/83990841

相关标签: 个人总结