最大的子序列和问题

来源:互联网 发布:中国援助朝鲜 知乎 编辑:程序博客网 时间:2024/06/05 16:52

问题描述:

给定整数A1,A2,…,AN(可能有负数),求的最大值(为方便起见,如果所有整数均为负数,则最大子序列和为0)。

例如:

输入:-2,11,-4,13,-5,-2时,答案为20(从A2到A4)。

C语言代码如下:

#include <stdio.h>int MaxSubSequenceSum(const int A[], int N){int MaxSum, CurrentSum, i;MaxSum = 0;CurrentSum = 0;for(i=0;i<N;i++){CurrentSum += A[i];if(CurrentSum > MaxSum)MaxSum = CurrentSum;else if(CurrentSum < 0)CurrentSum = 0;}return MaxSum;}int main(){int A[] = {-2,11,-4,13,-5,-2};int N = 6;int Sum = MaxSubSequenceSum(A, N);printf("MaxSubSequenceSum = %d\n", Sum);return 0;}


0 0
原创粉丝点击