Chinaunix首页 | 论坛 | 博客
  • 博客访问: 287812
  • 博文数量: 134
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 118
  • 用 户 组: 普通用户
  • 注册时间: 2013-08-01 14:02
文章分类

全部博文(134)

文章存档

2015年(2)

2014年(4)

2013年(128)

分类: C/C++

2013-10-22 19:36:22

//整形数组,有正数,有负数,有0,求连续子序列最大和;
//int a[]={-5,0,9,8,7,6,5,45,-100,9,0,56,45};



#include

int main(void)
{
    int a[]={-5,0,9,8,7,6,5,45,-100,9,0,56,45};
    int max=0;
    int sum=0;
    int i=0;
    int len=sizeof(a)/sizeof(a[0]);

    for(i=0;i     {
        if(a[i]>=0)
        {
            sum+=a[i];
        }
        else
        {
            if(sum>max)
            {
                max=sum;
            }
            if(a[i]+sum<0)
            {
                sum=0;
            }
            else
            {
                sum+=a[i];
            }
        }
    }

    if(sum>max)
    {
        max=sum;
    }
    printf("%d\n",max);

    return 0;
}
阅读(1366) | 评论(0) | 转发(0) |
0

上一篇:二叉树的操作

下一篇:LINUX文件系统

给主人留下些什么吧!~~