最大字段和问题

来源:互联网 发布:app store推荐软件 编辑:程序博客网 时间:2024/06/05 04:02
题目描述: 
N个整数组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的连续子段和的最大值。当所给的整数均为负数时和为0。 

例如:-2,11,-4,13,-5,-2,和最大的子段为:11,-4,13。和为20。


dp动态规划求解

#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<cstdlib>#include<stack>using namespace std;int MaxSum(int *seq, int n) {    int sum = seq[0];    int i, MAX=sum;        for(i=1; i<n; i++) {        if(sum < 0) {            sum = seq[i];        }        else {            sum += seq[i];        }        if(MAX < sum) {            MAX = sum;        }    }    return MAX;}int main(){    int ans;    int test[6] = {-2, 11, -4, 13, -5, -2};    ans = MaxSum(test, 6);    cout<<ans<<endl;    return 0;}


原创粉丝点击