算法 | 最大字段和

Posted jj81

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法 | 最大字段和相关的知识,希望对你有一定的参考价值。

 

  技术分享图片

 

 

#include <stdio.h>
int a[100001],dp[100001];
int main()
{
    int T,n;
    while(~scanf("%d",&n))
    {
        
        for(int i=0;i<n;i++)
        {
            scanf("%d",&a[i]);
        }
        dp[0] = a[0];
        int start = 0,end = 0,max = -1001;
        int first = 0,last = 0;
        for(int i=0;i<n;i++)
        {
            if(dp[i-1]+a[i]>=a[i])         //判断条件
            {
                dp[i] = dp[i-1]+a[i];
                end = i;
            }
            else
            {
                dp[i] = a[i];
                start = end = i;
            }
            if(max<dp[i])
            {
                max = dp[i];
                first = start;
                last = end;
            }
        }
        if(max < 0) {
        	printf("0");
		}else {
			printf("%d",max);
        
	        for(int i = first; i <= last; i++) {
	        	printf(" %d",a[i]);
			} 	
		}
        
       
        printf("
");
        
    }
    return 0;
}

  

以上是关于算法 | 最大字段和的主要内容,如果未能解决你的问题,请参考以下文章

有人可以解释啥是 SVN 平分算法吗?理论上和通过代码片段[重复]

分治算法解最大子序列和问题

片段(Java) | 机试题+算法思路+考点+代码解析 2023

伪代码

算法排序之堆排序

以下代码片段的算法复杂度