题解 | #连续子数组的最大乘积#

乘积为正数的最长连续子数组

http://www.nowcoder.com/practice/0112b9b5a09048d89309f55ea666db91

#include<stdio.h>
#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;
}
全部评论

相关推荐

oppo 应用软开 22*15+0.5*12
拿到了ssp完美:真的坎坷,但是你至少拿到这么多offer了!
点赞 评论 收藏
分享
joe2333:怀念以前大家拿华为当保底的日子
点赞 评论 收藏
分享
冷艳的小师弟在看机会:jd测评乱点直接被挂了,哭死~
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务