线性扫描算法求数组中的最大子序列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线性扫描算法求数组中的最大子序列相关的知识,希望对你有一定的参考价值。

  在看pat上的题目思考许久,还是久久不能完全实现怎么去求子序列中的首位。先贴出个还有点bug的代码:

#include <stdio.h>

int main() {
    int i, size = 0, maxEle = 0, currEle = 0;
    int currEleStart = 0, currEleEnd = 0;

    scanf("%d", &size);
    int arr[size];

    for(i = 0; i < size; i++) {
        scanf("%d", &arr[i]);
        currEle += arr[i];

        if (currEle >= 0 && maxEle == 0) {
            currEleStart = arr[i];
        }

        if (currEle > maxEle) {
            maxEle = currEle;
            currEleEnd = arr[i];
        }

        else if (currEle < 0) {
            currEle = 0;
        }
    }
    printf("%d %d %d", maxEle, currEleStart, currEleEnd);
    return 0;
}

  

以上是关于线性扫描算法求数组中的最大子序列的主要内容,如果未能解决你的问题,请参考以下文章

求最大连续子序列之和c语言

[算法]滴滴笔试题——求最大子串和(O(n)复杂度)

算法小总结最大连续子序列和最大连续子矩阵的关系与实现

最大连续子段和的两种线性算法

最大连续子段和的两种线性算法

动态规划求最大子序列之和以及序列号