题解 | #连续子数组的最大乘积#
乘积为正数的最长连续子数组
http://www.nowcoder.com/practice/0112b9b5a09048d89309f55ea666db91
#include<stdio.h>
{
return a>b?a:b;
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
int ret[100001];
int count=0;
int sum=0;
int mincnt=0;
int maxcnt=0;
for(int i=1;i<=n;i++)
{
scanf("%d ",&ret[i]);
}
for(int i=1;i<=n;i++)
{
if(ret[i]>0)
{
maxcnt++;
if(mincnt>0)
{
mincnt++;
}
}
else if(ret[i]<0)
{
int tmp=mincnt;
mincnt=maxcnt+1;
if(tmp>0)
{
maxcnt=tmp+1;
}
else
{
maxcnt=0;
}
}
else
{
mincnt=0;
maxcnt=0;
}
count=max(count,maxcnt);
}
printf("%d",count);
}
return 0;
}
#include<string.h>
/*借鉴别人的代码,理解*/
int max(int a,int b){
return a>b?a:b;
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
int ret[100001];
int count=0;
int sum=0;
int mincnt=0;
int maxcnt=0;
for(int i=1;i<=n;i++)
{
scanf("%d ",&ret[i]);
}
for(int i=1;i<=n;i++)
{
if(ret[i]>0)
{
maxcnt++;
if(mincnt>0)
{
mincnt++;
}
}
else if(ret[i]<0)
{
int tmp=mincnt;
mincnt=maxcnt+1;
if(tmp>0)
{
maxcnt=tmp+1;
}
else
{
maxcnt=0;
}
}
else
{
mincnt=0;
maxcnt=0;
}
count=max(count,maxcnt);
}
printf("%d",count);
}
return 0;
}