求数组子序列最大和的算法

来源:互联网 发布:it外包网站源码 编辑:程序博客网 时间:2024/04/29 04:04
给定一个整型数数组,要求写一个函数,实现找出该数组中子序列各元素值之和的最大值,要求时间复杂度和空间复杂度最优。
int fun(int a[], int count)
{
    int i;
    int b = a[0];
    int sum = a[0];

    for(i = 1; i < count; i++)
    {
        if(b > 0)
        {
            b += a[i];
        }
        else
        {
            b = a[i];
        }
        
        if(b > sum)
        {
            sum = b;
        }
    }
    return sum;

}

问题分析,考虑使用动态规划算法,b为之前子序列的和,如果b+a[i] > b, 则最大子序列变为b + a[i], 否则最大子序列变为b=a[i];

程序在vc6上验证通过。

原创粉丝点击